функция вызывается, даже если она не вызывается в JavaScript - PullRequest
0 голосов
/ 29 апреля 2018

Я столкнулся с этой проблемой, когда я не вызываю функцию f (), но объект 'obj' вызывается, хотя мы также ничего не делаем с 'obj'. Значение х до 11. Вызывает ли она функцию f () при попытке установить для obj.g значение?

var x = 10;

function f () {
  console.log(x); //logs 10
  x = x + 1;
  console.log(x); //logs 11
  return x;
}


var obj = {
  func: f,
  g: f(),
};

console.log(x); // logs 11

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Вызывает ли она функцию f () при попытке установить obj.g в значение?

Да!

f вызывается при назначении obj.g.

Вы присваиваете obj.g возвращаемому значению вызова f без аргументов. Чтобы получить значение, необходимо вызвать функцию (f).


console.log(obj.g); // 11

0 голосов
/ 29 апреля 2018

С g: f() вы фактически вызываете функцию. Указание () после функции без тела функции ({..}) немедленно выполнит функцию. Просто удалите скобки после имени функции:

var x = 10;

function f () {
  console.log(x); //logs 10
  x = x + 1;
  console.log(x); //logs 11
  return x;
}


var obj = {
  func: f,
  g: f,
};

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