js里为什么0除于0等于NaN?

clipboard.png

<li v-for="option in item.options">
    <span class="m-text-nowrap">{{option.optionName}}</span>
    <span>{{option.answercount}}</span>
    <span>{{common.percentFormat(option.per)}}</span>
</li>


//算出百分比
for(var k=0;k<this.formData[i].options.length;k++){
    this.formData[i].options[k].per = this.formData[i].options[k].answercount / this.sum;
    console.log(this.formData[i].options[k].answercount + '和' + this.sum);
}

刚开始以为是我数据的问题,结果我打印出来都是0啊,怎样才不让它显示NaN?

clipboard.png

阅读 23k
7 个回答

首先,NaN是js里的一个特殊值,表示“非数字”(不过它typeof还是number);其次,0/0得到NaN是规定好了的:

clipboard.png
出处

最后,如果不想最终显示成NaN,那完全可以对结果判断一下,比较简单的方法是去Eustia里直接找到isNaN判断函数,点source直接去看源码,然后写到你程序最后加个判断就好了。

其实单就程序而言,这里本来也要加个判断逻辑,看下输出是否在预期范围内(其实输入也应该做下检查)。

  1. 任何数值除以0都会导致错误(数学规定)而终止程序执行,但是在 JavaScript 中,会返回出NaN,不影响后面程序
  2. 比0大的数除以0,会得到无穷大 | 在 js用 Infinity 来显示.

小学老师没有说0不能做除数么?/不能做分母么?

首先是个数学问题,0不能作为被除数,
所以任何数除0都会报错
js做了优化,0/0会返回NaN

数学怎么学的?单独判断呗

点开前还期待有什么独到见解。。。
看完发现 deserve it 这么多反对票

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题