JavaScript числа без единицы. Вы, кажется, пытаетесь назначить им единицы (kg
, m
). Когда вы делаете (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
s в конце дробной части числового литерала ничего не делает. 1.50
и 1.5
- это одно и то же число. (Вы можете поместить 0
s, если хотите, но это не имеет никакого значения в коде.)