这道题怎么判断,什么时候的赋值属于全局变量,什么时候赋值只属于局部的。

以下代码运行的结果是输出

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);