数学程序中的JavaScript输出

问题描述 投票:0回答:3

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter: () => 2 * Math.PI * this.radius
};

console.log(shape.diameter());
console.log(shape.perimeter());

我知道直径是20,但是为什么周长显示NaN?

javascript output
3个回答
2
投票

这是一个范围问题-半径变量在perimeter方法内不可用,因此未定义。将函数更改为常规方法可以解决此问题。

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter() {
    return 2 * Math.PI * this.radius
  }
};

console.log(shape.diameter()); //gives 20
console.log(shape.perimeter()); // gives 62.83185307179586

0
投票

取决于您打算如何使用它,class可能会更好。在下面的示例中,箭头功能中的this指向Circle实例。

class Circle {
  constructor(radius) {
    this.radius = radius;
  }
  
  diameter() {
    return this.radius * 2;
  }
  
  perimeter = () => 2 * Math.PI * this.radius;
}

const shape = new Circle(10);

console.log(shape.diameter());
console.log(shape.perimeter());

也就是说,如果您使用的是class,则我更倾向于将diameter定义为perimeter作为箭头函数。


0
投票

您好,未将周长用作函数箭头函数(()=>)

perimeter(){返回2 * Math.PI * this.radius}

© www.soinside.com 2019 - 2024. All rights reserved.