【发布时间】: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