【问题标题】:What kind of scope does the variable belong to if we define a function variable outside of this function?如果我们在这个函数之外定义一个函数变量,这个变量属于什么样的作用域呢?
【发布时间】:2015-07-09 19:15:30
【问题描述】:

考虑这段代码

function foo(){
     foo.count = 1;
     console.log(foo.count);
}
foo.count = 2;
foo();
console.log(foo.count);

我预计结果会是 1, 2,但实际结果是 1, 1。 这令人困惑;我为foo.count = 2 分配了一个新值,但它似乎不起作用。

function foo(){
     console.log(foo.count);
}
foo.count = 2;
foo();
console.log(foo.count);

如果我删除foo()函数中的赋值代码,结果是2、2。

所以我想知道如果我们在这个函数之外定义一个函数变量,这个变量的作用域是什么? foo.count是属于函数作用域还是全局作用域?

【问题讨论】:

  • 这不是范围问题;您将一个属性设置为一个值,然后运行该函数,该函数将该属性设置为一个新值。
  • 这将打印 1,2 function foo(){ foo.count = 1; console.log(foo.count); } foo(); foo.count = 2; console.log(foo.count);
  • @Claies 非常感谢你。你的回答让我弄清楚我被误解了什么。

标签: javascript function scope


【解决方案1】:

在您的原始代码中,当您在第 6 行执行 foo() 时,您将值设置为 1

【讨论】:

    猜你喜欢
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 2012-04-01
    • 2022-12-04
    相关资源
    最近更新 更多