2015-04-29 89 views
5

我剛剛發現,在過去的42鉻和FF 37.0.2的代碼,這行是完全合法的「使用嚴格」;現在允許重複的屬性?

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

(複製粘貼從MDN

在10-11 IE和Opera 28.0。 1750如預期的那樣拋出錯誤。

在同一時間,

abc=0; 

導致如預期誤差(未聲明的變量)。

有沒有人知道是什麼引起了這種變化?

+0

請參閱[關於爲什麼行爲改變的討論](https://esdiscuss.org/notes/2014-06-06#rest-properties-and-spread-properties-sebastian-markb-ge-)。 –

回答

12

這裏有一個Bugzilla ticket。從我收集的內容(這裏以及我查閱的其他頁面)中,重複的屬性在ECMAScript版本6中是合法的,與ES5相反,在嚴格模式下它是禁止的。

+0

絕對是https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Duplicate_property_names – Kaiido

+3

這真的看起來像一個糟糕的壞壞設計決定。 –

+0

@AndreyKuleshov因爲這個:http://es6-features.org/#ComputedPropertyNames – Kaiido