2015-04-29 13 views
5

Tôi chỉ thấy rằng trong Chrome cuối cùng 42 và FF 37.0.2 dòng mã này là hoàn toàn hợp pháp"sử dụng nghiêm ngặt"; bây giờ cho phép các thuộc tính trùng lặp?

"use strict"; 
var o = { p: 1, p: 2 }; 

(copy-dán từ MDN)

Trong IE 10-11 và Opera 28.0. 1750 nó ném lỗi như mong đợi.

Trong cùng thời gian,

abc=0; 

gây ra lỗi (biến chưa được khai báo) như mong đợi.

Có ai biết điều gì đã gây ra thay đổi như vậy không?

+0

Xem [thảo luận này về lý do thay đổi hành vi] (https://esdiscuss.org/notes/2014-06-06#rest-properties-and-spread-properties-sebastian-markb-ge-). –

Trả lời

12

Có một Bugzilla ticket tại đây. Từ những gì tôi thu thập (ở đây và các trang khác tôi đã tra cứu), thuộc tính trùng lặp là hợp pháp trong ECMAScript phiên bản 6, trái ngược với ES5, nơi nó bị cấm trong chế độ nghiêm ngặt.

+0

Tuyệt đối https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Duplicate_property_names – Kaiido

+3

Điều đó thực sự trông giống như một quyết định thiết kế xấu xấu xấu. –

+0

@AndreyKuleshov vì điều này: http://es6-features.org/#ComputedPropertyNames – Kaiido

Các vấn đề liên quan