下面这段代码在执行的时候, 打印的结果是1, Error: undefined;

function fn() { 
    var x = y = 1; 
} 

fn(); console.log(y);
// 1; console.log(x); // Error: undefined;

 

 

原因是这个函数在执行的时候, 是先执行的: y = 1; 因为这里的y在声明赋值时没有使用var, 因此会默认成为全局变量, 然后将一个全局变量的值赋值给一个局部变量x;

 其实际的执行过程如下: 

var y = 1; 
function fn() { 
    var x = y; 
}

 

发布评论
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

怎样理解全局作用域和函数作用域讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。