以下代码运行的结果是输出
var a = b = 10;
(function(){
var a=b=20
})();
console.log(b);
A
10
B
20
C
报错
D
undefined
在全局函数中声明的变量都是全局变量,在局部函数中声明的变量只属于局部,这段代码,开始的a,b都是全局变量声明的,function里面声明了局部变量a,赋值时候先改变了全局函数b的值,然后把b的值赋给了局部变量a,然后局部变量a被销毁了,全局变量a没变
如果程序没有在console.log(b)执行之前调用function函数就是全局变量赋值的,如果在这之前调用了function函数了, 局部变量赋值会覆盖全局变量的赋值
你可以这样理解
var a=b=10;
function a(){
var a=b=20;//等价于var a=20,b=20,b是全局
}
a();
console.log(b);