javascript - 这里的 JavaScript 作用域是怎么回事?

标签 javascript scope

<分区>

我编写了以下代码片段:

var f = function() { document.write("a"); };

function foo() {
    f();

    var f = function() { document.write("b"); };
}

foo();

我希望调用打印 a 的函数,但它却给出了关于调用 undefined 值的运行时错误。为什么会这样?

最佳答案

关于变量提升http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html , http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/

你的代码等同于下一个;

var f = function() { document.write("a"); };
function foo() {
    //all var statements are analyzed when we enter the function
    var f;
    //at this step of execution f is undefined;
    f();
    f = function() { document.write("b"); };
}
foo();

关于javascript - 这里的 JavaScript 作用域是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499825/

相关文章:

javascript - 评估备选方案

scope - 从 jQuery 函数外部访问变量

C++ 超出范围问题

模板和非模板类的C++符号范围搜索顺序不同?

javascript - Google Maps API v3 : How do I pause/delay in Javascript to slow it down? 中的 OVER_QUERY_LIMIT

JavaScript:部署到 Openshift 后出现 Websocket 错误

javascript - 获取 *ngFor 中的对象字面量顶级名称

c++ - 为什么 C 允许我调用未声明的函数?

python - 关于 Python 变量作用域的困惑

javascript - 带有后代的 queryselectorAll 没有正确选择