js this问题

function foo(num) {

    console.log("foo: " + num);//6 7 8 9

    this.count++;

}


foo.count = 0;


var i;

for(i = 0; i < 10; i++){

    if(i > 5){

        foo( i );

    }

}

console.log(foo.count);// 0

console.log(count);//NaN

输出6,7,8,9我是知道的,

输出0 是因为this.count指向的是全局。

问题是创建出来的隐试count为什么是NaN???


突然想起来了,会不会是这样:

调用foo函数,隐试创建了一个全局属性count,

count = undefined。undefined ++ 就是NaN???


神不在的星期二
浏览 455回答 5
5回答

天涯尽头无女友

this.count 是全局的,如果没有定义就是 undefined ++ ,当然是NaN

温温酱

count都没定义,你定义的是foo

一只名叫tom的猫

function foo(num) {&nbsp; &nbsp; console.log("foo: " + num);//6 7 8 9&nbsp; &nbsp; this.count++;// window.count++&nbsp; Number(undefined)++}console.log(count);//NaN

aluckdog

count初始值为undefined对undefined进行++操作,使得count变为NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript