我想寫看中爲什麼(obj ['arr'] || obj ['arr'] = []).push(5);給我一個「分配中無效的左側」錯誤?
"Push on the array if the array exists; else, initialize the array and then push"
實施。我在我的Chrome控制檯中寫道
var obj = new Object();
(obj['arr'] || obj['arr'] = []).push(5);
我有理由相信這應該起作用。
據道格拉斯Crockford的書的JavaScript:好的部分,
The
||
operator produces the value of its first operand if the first operand is truthy. Otherwise, it produces the value of the second operand.
如果鍵入obj['arr']
到我的控制檯,返回的值是undefined
,這是falsy,不truthy。如果我輸入obj['arr'] = []
到我的控制檯,返回的值是數組obj['arr'] = []
,這是truthy。因此,聲明
(obj['arr'] || obj['arr'] = []).push(5);
應相當於
(obj['arr'] = []).push(5)
預期返回obj['arr'] = [5]
。
所以後來爲什麼會在Chrome瀏覽器
Uncaught ReferenceError: Invalid left-hand side in assignment(…)
錯誤,當我寫(obj['arr'] || obj['arr'] = []).push(5);
?????操作
雖然你爲什麼想,在所有的,是這不是明擺着看來,'='比''||更高的優先級。嘗試圍繞您的任務說明使用括號。 – SmokeDispenser