Как сохранить переменную x, значение которой зависит от переменной y, обновленной при изменении y? - PullRequest
0 голосов
/ 08 октября 2019
function test(n) {
    let y = 0
    let x = y / 2

    while (y < n) {
        console.log('add');
        y++;
    }
    console.log(y);
    console.log(x);
}
test(6);
//x prints out 0 instead of 3

x должен меняться при изменении y. Как сохранить эти переменные синхронизированными?

Ответы [ 4 ]

1 голос
/ 08 октября 2019

Если вы хотите постоянно синхронизировать переменные, вы можете создать объект, имеющий y и метод getter для x, который возвращает значение, зависящее от текущего значения y

let obj = {
  y: 0,
  get x() {
    return this.y / 2;
  }
};
function test(n) {
  while (obj.y < n) {
    console.log("add");
    obj.y++;
  }
  console.log(obj.y);
  console.log(obj.x);
}
test(6);
0 голосов
/ 08 октября 2019

В общем, лучшим вариантом, вероятно, будет использование функции для вычисления значения при ее вызове, особенно если вы выполняете недорогие вычисления. Думайте об этом как о алгебраическом выражении.

Рассмотрите следующее:

function x(y) {
  return y / 2
}

function test(n) {
    let y = 0

    while (y < n) {
        console.log('add');
        y++;
    }
    console.log(y);
    console.log(x(y));
}
test(6);
0 голосов
/ 08 октября 2019

Если x всегда половина от y, то зачем вам X?

0 голосов
/ 08 октября 2019

Нет ничего, что делает это автоматически, вам нужно сделать это самостоятельно.

    while (y < n) {
        console.log('add');
        y++;
    }
    x = y/2;

Если вторая переменная всегда является одной и той же функцией первой переменной, вы уверены, что вам нужны две переменные?

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