JavaScript 变量提升

标签 javascript variables scope hoisting

我无法理解为什么 name 在这里得到一个值

(function() {
  (function() {
    var name = 'Fido';
  })();
})();

console.log(name + ' says woof'); //Output: Fido says woof

变量名不应该是内部函数的局部变量吗?

最佳答案

该变量是局部变量,您看到的值并非来自函数内部的赋值。

您还将窗口命名为“Fido”,当您在全局范围内使用 name 时,您将获得 window.name 属性。

如果你在 jsfiddle 中尝试,你会得到“结果说 woof”。

演示:http://jsfiddle.net/Guffa/eDxf3/

关于JavaScript 变量提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20230621/

相关文章:

javascript - 将 Vaadin 组件放入 Javascript 组件生成的元素中

c - C 编译器如何实现参数个数可变的函数?

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

javascript - 在调整窗口大小时将动态值分配给变量 - javascript

Python lambda+exec 范围错误

angular - 在 Angular 8 中获取组件外部的引用变量

javascript - 对 8 位 PCM 信号进行 FFT

javascript - 未捕获的类型错误 : Cannot read property 'innerHTML' of null

javascript - 如何使用 Angular.JS 在下拉列表中绑定(bind)选项的值和文本

javascript - angularjs选择范围不更新