Tôi đọc MDN javascript reference, theo đoạn mã sau không còn trả false
:Mục đích của việc cho phép tên thuộc tính trùng lặp là gì?
function haveES6DuplicatePropertySemantics(){
"use strict";
try {
({ prop: 1, prop: 2 });
// No error thrown, duplicate property names allowed in strict mode
return true;
} catch (e) {
// Error thrown, duplicates prohibited in strict mode
return false;
}
}
In ECMAScript 5 strict mode code, duplicate property names were considered a SyntaxError. With the introduction of computed property names making duplication possible at runtime, ECMAScript 6 has removed this restriction.
Câu hỏi của tôi là, lợi ích thiết thực của việc cho phép trùng lặp bất động sản-tên trong initializers là gì? Tôi có thể thấy, khi các thuộc tính của đối tượng được gán động, điều này đôi khi có thể xảy ra, nhưng vì thứ tự ưu tiên rõ ràng xác định thuộc tính nào thực sự được đặt trên đối tượng mới được tạo ra - điều này có vẻ hơn bất kỳ thứ gì giống như hành vi không xác định.
Ném một lỗi cho tôi về crom V40 'Lỗi Cú pháp chưa gặp: tài sản dữ liệu trùng lặp trong đối tượng theo nghĩa đen không được phép vào mode' nghiêm ngặt nhưng không được bắt bởi 'try..catch' – Xotic750
Nó trả về' true' cho tôi trên chromium v42/firefox 37, nó có thể yêu cầu cờ "Thử nghiệm tính năng JavaScript" để có được hành vi tương đương trên v40? – user3467349
Bạn có muốn thực thi tập lệnh trong ES6 (thử nghiệm) hoặc trong ES5 không? Do chromium v42 và firefox 37 hiện có chạy chuẩn ở chế độ ES6 không? – Xotic750