То же вычисление возвращает NaN изнутри объекта, НО возвращает целое число из функции, выполняющей те же вычисления - PullRequest
0 голосов
/ 14 апреля 2020

Не могу понять, почему одни и те же вычисления возвращают два разных типа данных между:

  1. Вычисление изнутри определения объекта И
  2. Снаружи в ручную функция

Я уже посмотрел: JavaScript вычисление возвращает NaN & JavaScript: функция, возвращающая NAN

и I Я все еще сбит с толку. ПОМОГИТЕ.

Вот мой код, и он запускается:

var question_answer = {
  question1: Math.floor(Math.random() * 10),
  question2: Math.floor(Math.random() * 10),
  answer_inside: parseInt(this.question1 + this.question2),
};

console.log(typeof(question_answer.answer_inside))
console.log(question_answer.answer_inside)

console.log(typeof(check_answer()));
console.log(check_answer());


function check_answer() {
          real_ans = question_answer.question1 + question_answer.question2;
          return real_ans;
          }


prompt::node ./test.js
number
NaN
number
9


1 Ответ

4 голосов
/ 14 апреля 2020

Если вы не используете getter, это не относится к объекту. И this.question1, и this.question2 не определены, поэтому ваш answer_inside получает NaN.

var question_answer = {
  question1: Math.floor(Math.random() * 10),
  question2: Math.floor(Math.random() * 10),
  get answer_inside(){ return this.question1 + this.question2}
};

console.log(typeof(question_answer.answer_inside))
console.log(question_answer.answer_inside)

console.log(typeof(check_answer()));
console.log(check_answer());


function check_answer() {
          real_ans = question_answer.question1 + question_answer.question2;
          return real_ans;
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...