我在JavaScript (Firefox3.5,Windows XP)中尝试了以下操作:
(function(){
window.foobar = 'Welcome!';
})();
var foobar = 'PWN3D!';
alert(foobar);输出结果是'PWN3D!‘。为什么我的代码把我写进了PWN?我以为是var name = value;先被处死的。
发布于 2010-02-08 06:46:54
从specification (第87页):
在执行VariableStatement时,而不是在创建变量时,为具有初始化器的变量分配其AssignmentExpression的值。
因此,var会首先创建变量,但会按照正常的执行顺序为其赋值('PWN3D!')。
发布于 2010-02-08 06:44:05
我不确定您所说的先执行var语句是什么意思。你写的代码看起来和我预期的完全一样:
foobar设置为“!”
foobar变量设置为“PWN3D!”foobar,"PWN3D!"发布于 2010-02-08 06:45:58
您的alert语句可以看到局部变量foobar,并警告它的值,因为它在作用域链上比window.foobar更高。
https://stackoverflow.com/questions/2218666
复制相似问题