为什么此代码返回mark.BMI的NaN

时间:2019-10-14 22:56:50

标签: javascript function object

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 :(得分:0)

JavaScript不支持隐式this之类的东西;因此在calcBMI中,massheight未定义。另外,您正在定义一个massheight参数,但是在调用mark.calcBMI时,您不会为这些参数传递参数。< / p>

还应注意,^是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);

答案 1 :(得分:0)

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运算符,而不是幂运算符。