[英]JavaScript object update behavior (weird ?)
我正在學習Javascript。 試圖了解代碼,
function foo (){ var a = b = {name: 'Hai'}; document.write(a.name +'<br>'); document.write(b.name +'<br>'); a.name = 'Hello'; document.write(a.name +'<br>'); document.write(b.name +'<br>'); }
輸出如下,
海
海
你好
你好
確實,分配是從右到左進行的,但更新同時影響兩個方向。 這是怎么運作的? 有人可以解釋嗎?
嘗試在一個聯合聲明中聲明變量是一種不好的風格(並且不起作用 ),因為內部變量是在全局范圍中聲明的,而不是在局部變量中聲明的。
function foo (){ var a = b = {name: 'Hai'}; document.write(a.name +'<br>'); document.write(b.name +'<br>'); a.name = 'Hello'; document.write(a.name +'<br>'); document.write(b.name +'<br>'); } foo(); console.log(b);
在嚴格模式下,您會得到一個錯誤,因為您使用了一個沒有聲明的變量。
'use strict'; function foo (){ var a = b = {name: 'Hai'}; document.write(a.name +'<br>'); document.write(b.name +'<br>'); a.name = 'Hello'; document.write(a.name +'<br>'); document.write(b.name +'<br>'); } foo(); console.log(b);
真正的執行順序是
var a = (b = {name: 'Hai'});
首先評估內部表達,然后評估外部
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.