//var a;
a;
a = 10;
console.log(a);
我用“a”,理论上应该有一个上升-应该声明变量本身,然后将值10分配给变量“a”。为什么不显示10?
这里一切正常,尽管变量没有提前声明:
//var foo;
function bar() {
foo = 10;
}
bar();
console.log(foo);
这是为什么?这段代码是如何工作的?
//var a;
a;
a = 10;
console.log(a);
我用“a”,理论上应该有一个上升-应该声明变量本身,然后将值10分配给变量“a”。为什么不显示10?
这里一切正常,尽管变量没有提前声明:
//var foo;
function bar() {
foo = 10;
}
bar();
console.log(foo);
这是为什么?这段代码是如何工作的?
据我了解,在非严格模式下,有一条关于未声明变量(成为全局变量)的规则:
从这里:https ://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/var
您的代码中的差异与功能无关。尝试比较两个代码:
没有赋值的代码会引发错误,但如果有赋值则不会(不是在严格模式下)。
里面的功能是一样的:
引发错误,并且
不调用(不在严格模式下)。
因为弹出了一个广告,但是没有广告。太正常了: