javascript - javascript 执行上下文中的作用域

标签 javascript

为什么z()执行上下文不覆盖全局x变量?

var x = 10;

function z(){
  var x = x = 20;
}
z();
console.log(x); // Why is 10 printed? Shouldn’t it be 20.
<小时/>
var a = b = c = 0;

这意味着 bc 被声明为全局变量,而不是预期的局部变量。

例如:

var y = 10;

function z(){
   var x = y = 20; // Global y is overridden.
}
z();
console.log(y); // Value is 20.

按照上述逻辑,z() 中的 x = x = 20 意味着 x 是全局的,它会覆盖本地 x 变量,但 x 的全局值仍然是 10

最佳答案

function z(){
  var x = x = 20;
}

由于hoisting ,这实际上变成了:

function z(){
  var x;
  x = x = 20;
}

因此该函数中 x 的每个实例都引用局部变量,而不是全局变量。

关于javascript - javascript 执行上下文中的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229365/

相关文章:

javascript - knockout js - 部分模板更加干燥

javascript - polymer 2.0建筑构件

javascript - 以 Angular 分离 Controller 逻辑和工厂逻辑

javascript - HTML 下载的文件类型不正确

javascript - 打开pdf并立即打印

Javascript - 全局范围或局部范围,无法弄清楚

javascript - 如何使用 JQuery 填充 React 生成的输入字段

javascript - Chrome 扩展程序 : Inject JS before page load

javascript - Angularjs 自定义表单元素

javascript - 动态改变图像上的文本颜色