请问老师输出结果为什么是NaN

请问老师输出结果为什么是NaN

var obj = {
    a: 1,
    b: 2,
    fun: function(){
        console.log(this.a + this.b);
    }
}
 var a = 6
 var b = 8
 setTimeout(obj.fun, 2000);

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,这段代码输出的结果是14不是NaN。如下:

https://img1.sycdn.imooc.com/climg/660b6a6d0942797812660563.jpg

同学看看是不是贴错代码了。

如全局没有声明a和b的情况下会出现NaN

https://img1.sycdn.imooc.com/climg/660b6ac609b9c28f06650362.jpg

这是因为undefined + undefined 的结果就是NaN如下:

https://img1.sycdn.imooc.com/climg/660b6af309c5fada04910120.jpg


https://img1.sycdn.imooc.com/climg/660b6af809b868f203790143.jpg

这里要注意一下,在这段代码中obj.fun方法中的this指向的是window。所以全局没有声明a和b的话那么进行this.a+ this.b就相当于是undefined+undefined。

祝学习愉快!

  • 蟹黄包12138 提问者 #1

    https://img1.sycdn.imooc.com/climg/660b6b3c0907ac6e08570838.jpg

    2024-04-02 10:19:44
  • 好帮手慕小李 回复 提问者 蟹黄包12138 #2

    如果你要是用node去读,那NaN就更不奇怪了。node中的this指向的是global,浏览器中的this指向的是window。老师讲课是基于window讲的,所以别用node去读。

    2024-04-02 10:29:06
  • 蟹黄包12138 提问者 回复 好帮手慕小李 #3

    好的 谢谢老师

    2024-04-02 10:31:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师