JavaScript:如果首先执行var语句,那么为什么这不起作用?

oro*_*aki 2 javascript

我在JavaScript(Firefox 3.5,Windows XP)中尝试了以下内容:

(function(){
    window.foobar = 'Welcome!';
})();

var foobar = 'PWN3D!';

alert(foobar);
Run Code Online (Sandbox Code Playgroud)

输出是'PWN3D!'.为什么我的代码PWN我?我以为var name = value;先执行了.

Que*_*tin 10

规格(第87页):

具有Initialiser的变量在执行VariableStatement时被赋予其AssignmentExpression的值,而不是在创建变量时.

因此var,首先创建变量的原因,但是value('PWN3D!')以正常执行顺序分配给它.