当我在数字旁边添加var时,我的代码给了我一个NaN值

时间:2019-01-11 17:13:25

标签: 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('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

java.js:130 1.6高度

java.js:133 2.1高度

java.js:137 NaN NaN

java.js:140约翰的bmi比马克大吗?错误

1 个答案:

答案 0 :(得分:1)

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

相反,只使用数字即可(请参阅注释);添加仅用于显示的单位后缀:

var mass = 'kg';
var height = 'm';

var markMass = 45; // *** Not (45+mass)
console.log('Marks Mass is'+' '+markMass+mass); // *** Add mass suffix here for display

var johnMass = 67; // ***
console.log('John Mass is'+' '+johnMass+mass); // ***

var johnHeight = 1.6; // ***
console.log('John height is'+' '+johnHeight+height); // ***

var markHeight = 2.1; // ***
console.log('Mark height is'+' '+markHeight+height);

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);


旁注:

  • var x = (y + z);中,()根本没有任何目的,仅使用var x = y + z;
  • 在数字文字的小数部分的末尾尾随0不会执行任何操作。 1.501.5是完全相同的数字。 (您可以根据需要将0放在此处,但是在代码中没有任何意义。)