возвращая другую функцию в get (), почему нельзя просто вызвать ее вместо добавления '()' - PullRequest
0 голосов
/ 23 октября 2018
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100

Для приведенного выше кода, чтобы вернуть результат calcArea (), зачем нужно добавлять ключевое слово return в get area ().Может ли это быть просто вызвано как

get area(){
this.calcArea();
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Давайте разберем функцию area() на несколько строк:

  get area() {
    let a = this.calcArea();
    return a;
  }

Здесь мы храним результат, возвращаемый this.calcArea(), в переменной с именем a.Затем мы возвращаем значение в этой переменной.Оригинальный код - это просто сокращение для этой более длинной версии.

0 голосов
/ 23 октября 2018

Это может звучать смехотворно просто, но: , потому что в противном случае ничего не будет возвращено .

this.calcArea() вызывает функцию calcArea, а если эта функция return sчто-то, это return s для вызывающей стороны , то есть area.Но если area ничего не делает со значением, его просто отбрасывают.

Посмотрите на это так: не имеет значения, что делает функция, которую вы вызываете, это никогда не повлияетчто делает ваша текущая функция.В area нет return, так что функция ничего не делает return.Неважно, что делает любая функция, которую вы вызываете из area, она ничего не сделает area return, если только area явно не имеет оператора return.

В данный моментДругими словами, что вы ожидаете от этого:

get area() {
  this.calcArea();
  return 42;
}

Не имеет смысла возвращать что-либо кроме 42.Если вы возьмете это return 42 заявление, почему вы ожидаете, что оно что-нибудь вернет?

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