请容忍我。我正在处理下面的循环,并试图弄清楚为什么foo.count永远不会递增并显示0。我想重写这个示例,以便foo.count正确递增。我知道我忽略了什么。有什么建议吗?
谢谢

function foo(num) {
  console.log("foo: " + num);
  this.count++;
}
foo.count = 0;

var i;
for (i = 0; i < 10; i++) {
  if (i > 5) {
    foo(i);
  }
}
// foo: 6
// foo: 7
// foo: 8
// foo: 9
console.log(foo.count); // Still 0!

最佳答案

正如Jaromanda所提到的,您使用的this不正确。在这种情况下,您需要小心使用它。尝试将this.count++替换为foo.count++

function foo(num) {
  console.log("foo: " + num);
  foo.count++;
}
foo.count = 0;

var i;
for (i = 0; i < 10; i++) {
  if (i > 5) {
    foo(i);
  }
}
// foo: 6
// foo: 7
// foo: 8
// foo: 9
console.log(foo.count); // Still 0!

请注意,使用this引用它包含在其中的对象,而不是中的函数包含在中,因为您似乎误以为它包含在中。在引用当前包含的对象时,必须使用“this”运算符,这不仅是为了清楚起见,而且也是为了避免潜在的歧义。

关于javascript - 我需要在JavaScript循环中适当增加一个函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40119561/

10-11 07:38
查看更多