JavaScript变量提升

pla*_*web 0 javascript variables scope hoisting

我有一个问题,理解为什么名字在这里得到一个值

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

console.log(name + ' says woof'); //Output: Fido says woof
Run Code Online (Sandbox Code Playgroud)

变量名称不应该是内部函数的本地名称吗?

Guf*_*ffa 5

变量是本地变量,您看到的值不是来自函数内部的赋值.

您也将窗口命名为"Fido",当您name在全局范围内使用时,您将获得该window.name属性.

如果你在一个jsfiddle中尝试它,你会得到"结果说woof".

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