与Javascript中的提升混淆
有人能解释一下为什么与Javascript中的提升混淆,javascript,hoisting,Javascript,Hoisting,有人能解释一下为什么条中的语句没有定义foous吗 var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 给定的代码将按如下方式解析: var foo = 1; function bar() { var foo; if (!foo) { foo = 10; } alert(foo); } bar();
条中的语句没有定义foo
us吗
var foo = 1;
function bar() {
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
给定的代码将按如下方式解析:
var foo = 1;
function bar() {
var foo;
if (!foo) {
foo = 10;
}
alert(foo);
}
bar();
本地foo被提升到函数的顶部,因为JS只有函数作用域,没有阻塞作用域。“highed”变量将优先于函数外部定义的foo,这就是为什么在if语句中未定义该变量的原因。给定代码的解析如下:
var foo = 1;
function bar() {
var foo;
if (!foo) {
foo = 10;
}
alert(foo);
}
bar();
本地foo被提升到函数的顶部,因为JS只有函数作用域,没有阻塞作用域。“highed”变量将优先于函数外部定义的foo,这就是if语句中未定义该变量的原因