[英]JavaScript: If var statements are executed first, then why does this not work?
我在JavaScript(Firefox 3.5,Windows XP)中嘗試了以下內容:
(function(){
window.foobar = 'Welcome!';
})();
var foobar = 'PWN3D!';
alert(foobar);
輸出是'PWN3D!'。 為什么我的代碼PWN我? 我以為var name = value;
先執行。
從規格 (第87頁):
具有Initialiser的變量在執行VariableStatement時被賦予其AssignmentExpression的值,而不是在創建變量時。
所以var
導致首先創建變量,但是值( 'PWN3D!'
)以正常執行順序分配給它。
我不確定你首先執行的var
語句是什么意思。 您編寫的代碼看起來完全像我預期的那樣工作:
foobar
設置為“Welcome!” foobar
變量設置為“PWN3D!” foobar
的當前值“PWN3D!”引發一個警告框。 您的警報語句會看到局部變量foobar並提醒其值,因為它在范圍鏈上比window.foobar更高。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.