打出nan为什么

打出nan为什么

function calculate(num1,num2){

return {

add: function add(num1,num2){

return num1+num2;

},

subtract: function subtract(num1,num2){

return num1-num2;

},

multiply: function multiply(num1,num2){

return num1*num2;

},

divide: function divide(num1,num2){

return num1/num2;

}

};

}

//console.log(calculate().add(5,2));


console.log(calculate(5,2).add());


console.log(calculate(5,2).subtract());

打印的结果是NAN为什么

正在回答 回答被采纳积分+1

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

1回答
好帮手慕星星 2018-05-16 13:32:24

因为你的函数中:

http://img1.sycdn.imooc.com//climg/5afbc18d0001220005630241.jpg

虽然最外层设置的参数和里面的每一个运算设置的参数是一样的,但是程序并不这么认为,它会从计算的最近开始找,如果有形参,但是你没有传入实参,计算出来就是NaN,尽管外层传入的也是没有用的,如果是这样:

http://img1.sycdn.imooc.com//climg/5afbc2070001196b05700128.jpg

http://img1.sycdn.imooc.com//climg/5afbc2110001c79904610035.jpg

这样调用就没有问题,add计算没有形参,所以它会向上找,找到了外层的形参。

自己再理解下,祝学习愉快~~

  • 提问者 爱你一生的我 #1
    //console.log(calculate().add(5,2)); 这样是可以调用的 console.log(calculate(5,2).add());这个是不可以调用的
    2018-05-16 17:54:21
  • 给你已经解释了啊,第一个打印是可以的,但是第二个结果为NaN就是上面的解释,更改的方法就是贴的图片。
    2018-05-16 17:57:22
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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