function fn(num) {console.log( "fn: " + num );// count用于记录fn的被调用次数this.count++;}fn.count = 0;var i;for (i=0; i<10; i++) {if (i > 5) { fn( i );}}// fn: 6// fn: 7// fn: 8// fn: 9console.log( fn.count ); // 0 -- 耶?咋不是4捏?不是我写的代码,来自网上,问题就是为什么结果是0,网上有些解释的不是很好,希望答主们最好能扩展一下。 评论邀请回答编辑
2 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
解释参考注释,都在代码下面,这个没什么可扩展的,没有难的知识点,如果 this 不懂,看js 中 this 的指向问题
function fn(num) {
console.log("fn: " + num);
//输出 "fn: " 和 传入的参数 num
this.count++;
// count用于记录fn的被调用次数
//这个地方的 this 是 全局变量,浏览器端是 window,
//所以上面代码相当于 window.count++
//window.count 未初始化,初始值默认是 undefined,undefined ++ 最终返回 NaN
}
fn.count = 0;//fn.count 始终没有被动过;
var i;
for (i = 0; i < 10; i++) {
if (i > 5) {
fn(i);
// 保证只把 6-9 传递给 fn 作为参数,
}
}
// 所以这个 for 循环相当于 fn(6),fn(7),fn(8),fn(9)
// fn: 6
// fn: 7
// fn: 8
// fn: 9
console.log(fn.count); // 0 -- 耶?咋不是4捏?
// 回答完毕;
添加回答
举报
0/150
提交
取消
