Javascript 当我在一个数字旁边添加一个变量时,我的代码会给我一个NaN值

Javascript 当我在一个数字旁边添加一个变量时,我的代码会给我一个NaN值,javascript,var,Javascript,Var,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('

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 45mass

java.js:127 67mass

js:130 1.6height

java.js:133 2.1height

java.js:137楠楠


js:140约翰的体重指数比马克大吗?false

JavaScript数字是无单位的。您似乎在尝试为它们分配单位(
kg
m
)。当您执行
(45+mass)
时,结果是一个字符串,因为
mass
是一个字符串,因此
+
进行字符串连接。之后,该字符串无法完全转换回数字(因为
kg
没有数字含义),因此从字符串到数字的转换将导致
NaN

相反,只需处理数字(见注释);添加仅用于显示的单位后缀:

var质量='kg';
变量高度='m';
var markMass=45;//**非(45+质量)
console.log('标记质量为'+''+标记质量+质量);//**在此处添加质量后缀以显示
var johnMass=67;//***
console.log('johnMass是'+''+johnMass+Mass);//***
var johnHeight=1.6;//***
console.log('johnHeight是'+''+johnHeight+height);//***
var markHeight=2.1;//***
console.log('标记高度为'+''+标记高度+高度);
变量bmiJohn=johnMass/(johnHeight*johnHeight);
var bmiMark=标记质量/(标记高度*标记高度);
console.log(bmiJohn,bmiMark);
var whoHasMore=bmiJohn>bmiMark;

log('约翰的体重指数比马克大吗?'+''+谁的体重指数更大?)2.10+“m”==“2.10m”
+
如果两个参数都是数字,则为加法,否则为串联<代码>*始终是乘法,它要求两个参数都是数字。如果其中一个不是数字,它将返回
NaN
。您将数字值设置为一个字符串,附加kg和m(在输出中最后执行此操作),直到您执行算术运算(第5部分的除法)时,它才会咬住您。NaN=不是一个数字。通过不将单位附加到数字(将其转换为字符串)将变量视为数字。Javascript会动态地进行大量转换,这是语言的一部分,您需要非常小心地使用它。