为了账号安全,请及时绑定邮箱和手机立即绑定

js this问题

js this问题

神不在的星期二 2019-03-05 13:15:50
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);// 0console.log(count);//NaN输出6,7,8,9我是知道的,输出0 是因为this.count指向的是全局。问题是创建出来的隐试count为什么是NaN???突然想起来了,会不会是这样:调用foo函数,隐试创建了一个全局属性count,count = undefined。undefined ++ 就是NaN???
查看完整描述

5 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-04-02
?
温温酱

TA贡献1752条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-04-02
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

function foo(num) {

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

    this.count++;// window.count++  Number(undefined)++

}

console.log(count);//NaN


查看完整回答
反对 回复 2019-04-02
?
aluckdog

TA贡献1847条经验 获得超7个赞

count初始值为undefined
对undefined进行++操作,使得count变为NaN

查看完整回答
反对 回复 2019-04-02
  • 5 回答
  • 0 关注
  • 454 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信