【发布时间】:2019-01-11 17:13:25
【问题描述】:
NaN 值出现在控制台中,我不知道为什么。我的代码有什么问题?
var mass = 'kg';
var height = 'm';
var markMass = (45+mass);
console.log('Marks Mass is'+' '+markMass);
var johnMass = (67+mass);
console.log('John Mass is'+' '+johnMass);
var johnHeight = (1.60+height);
console.log('John height is'+' '+johnHeight);
var markHeight = (2.10+height);
console.log('Mark heigth is'+' '+markHeight);
var bmiJohn = johnMass / (johnHeight * johnHeight);
var bmiMark = markMass / (markHeight * markHeight);
console.log(bmiJohn, bmiMark);
var whoHasMore = bmiJohn > bmiMark;
console.log('has john a bigger bmi than mark?'+' '+whoHasMore);
java.js:124 45 质量
java.js:127 67 质量
java.js:130 1.6 高度
java.js:133 2.1 高度
java.js:137 NaN NaN
java.js:140 john 的 bmi 比 mark 大吗?假的
【问题讨论】:
-
因为它们不是整数。它们是带有公斤或其他东西的字符串。
-
2.10 + "m" === "2.10m" -
+如果两个参数都是数字,则为加法,否则为连接。*总是乘法,它要求两个参数都是数字。如果其中一个不是数字,则返回NaN。 -
您正在使数字值成为附加 kg 和 m 的字符串(在您的输出中最后执行此操作),直到您执行算术运算(第 5 部分中的除法) ) 它窒息。 NaN = 不是数字。通过不将单位附加到数字(将它们转换为字符串)来将变量视为数字。 Javascript 进行了大量的动态转换,它是您需要非常小心的语言的一部分。
标签: javascript var