Почему этот код возвращает NaN для mark.BMI - PullRequest
0 голосов
/ 15 октября 2019

var mark = {
    firstName: 'Mark',
    height: 6.2,
    mass: 180,
    calcBMI: function(height, mass) {
        this.BMI = mass / (height^2);
    }
};

mark.calcBMI();
console.log(mark);

Работа над некоторыми новичками. Такое ощущение, что это должно сработать, но мне не повезло.

Ответы [ 2 ]

0 голосов
/ 15 октября 2019
var mark = {
    firstName: 'Mark',
    height: 6.2,
    mass: 180,
    calcBMI: function() {
        this.BMI = this.mass / (Math.pow(this.height,2));
    }
};

mark.calcBMI();
console.log(mark);

Просто нужно добавить this в начало и использовать Math.pow() вместо ^, поскольку это оператор XOR, а не оператор возведения в степень.

0 голосов
/ 15 октября 2019

JavaScript не поддерживает ничего вроде неявного this;поэтому в calcBMI, mass и height не определены. Кроме того, вы определяете параметры mass и height, но когда вы вызываете mark.calcBMI, вы не передаете аргументы для этих параметров.

Это должноТакже следует отметить, что ^ является оператором XOR. Оператор возведения в степень - **.

Попробуйте вместо этого:

var mark = {
    firstName: 'Mark',
    height: 6.2,
    mass: 180,
    calcBMI: function() {
        this.BMI = this.mass / (this.height * this.height);
    }
};

mark.calcBMI();
console.log(mark);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...