簡體   English   中英

JavaScript:如果首先執行var語句,那么為什么這不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM