語法錯誤我在Chrome控制檯發揮各地,並想知道爲什麼這個語句拋出一個語法錯誤:{} .hasOwnProperty('id');返回控制檯
{}.hasOwnProperty('id');
我的期望是迴歸價值false
。
在Firefox和IE中也會出現語法錯誤。
如果我使用空數組而不是空對象,則可以使用相同的方法。
同樣也適用,如果我把牙套周圍:
({}.hasOwnProperty('id'));
語法錯誤我在Chrome控制檯發揮各地,並想知道爲什麼這個語句拋出一個語法錯誤:{} .hasOwnProperty('id');返回控制檯
{}.hasOwnProperty('id');
我的期望是迴歸價值false
。
在Firefox和IE中也會出現語法錯誤。
如果我使用空數組而不是空對象,則可以使用相同的方法。
同樣也適用,如果我把牙套周圍:
({}.hasOwnProperty('id'));
問題片段中存在語法歧義。在JavaScript大括號具有兩個含義:它們被用於分隔碼塊,例如:
if (x) {
...
}
並且它們被用於聲明對象常量:
var obj = {
prop: "value"
}
Constext用於在兩者之間進行區分解釋,並在以下情況:
{}.hasOwnProperty('id');
花括號被解析爲阻止聲明,所以這會產生語法錯誤。在另一方面:
({}.hasOwnProperty('id'));
人們不能在括號內聲明塊,所以{}
被識別爲對象在此上下文中文字。
這是一個完整的答案恕我直言。 – enguerranws 2014-10-09 12:04:37
{}被視爲一個語句塊而不是一個對象,因爲你期望。因此錯誤。
編輯:作爲@Cerbrus在評論中提到,({})。hasOwnProperty('id');將返回false而不是錯誤。這是因爲當用括號括起來時,它被解釋爲對象。
僅供參考:'({})。hasOwnProperty('id');'也適用。 – Cerbrus 2014-10-09 11:55:41
沒有包圍圓括號(或應用操作符)的'{}'被解析爲語句塊,而不是對象字面量。 – 2014-10-09 11:56:48
在這種情況下,'{}'將被解釋爲塊語句而不是對象字面量。 – BYossarian 2014-10-09 11:57:09