我一直在研究 Javascript 函数作用域并遇到了这个:
var scope = "global";
function f(){
console.log(scope);
var scope = "local";
console.log(scope);
}
f();
现在我明白第一个日志的输出是“未定义”的,因为 js 如何在函数顶部提升变量。但是当我从“varscope =”local“;”中删除var时第一个日志输出“全局”,这让我摸不着头脑。有人可以解释为什么会发生这种情况吗?我的意思是js不是按顺序运行代码吗?因此,删除 VAR 对第一个日志有何影响?
两遍解析。该代码将被视为
function f() {
var scope; // var created, but no value assigned. this overrides the earlier global
console.log(scope);
scope = 'local';
console.log(scope);
}
var 的 CREATION 将被执行,就好像它是函数中执行的第一位代码一样。但实际的赋值操作只有在正常情况下才会发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)