Zah*_*med 1 javascript scope hoisting
我正在练习一些场景并找到一个案例:
根据关闭栏功能应该有访问权限,var x因此我预计会发出警报1并且条件因为if(!1)但是它被警告undefined并且状态变为真,而第二次警报的值为10.
var x = 1;
function bar() {
alert(x);
if (!x) {
var x = 10;
}
alert(x);
}
bar();
Run Code Online (Sandbox Code Playgroud)
所以我很困惑为什么它会提示未定义?
根据特定范围内的提升,您可以在任何位置始终定义变量.
如果是由于提升效应,它仍然必须提醒10而不是未定义.
提升导致变量在函数中的任何位置声明,未定义.
在第一行bar,因为var x在函数的第3行,全局x被屏蔽,你看到本地x(undefined因为它还没有给出一个值).
在第3行bar,你有x = 10定义变量.这没有悬挂.
在第5行,您提醒它,现在已定义它.
