Переменная не обновляет Javascript

У меня есть переменная x, которая будет изменяться несколько раз на протяжении всей моей программы. И у меня есть переменная y, которая тоже будет. Однако мне нужна переменная xy.

let x = 1;
let y = 1;
let xy = 'X' + x + 'Y' + y //should look like X1Y1

x += 1;
y += 1;

console.info(xy);


//the output is still X1Y1 and not X2Y2 like I want it

Я уверен, что это простой ответ, но я не могу найти решение, поэтому любая помощь приветствуется.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
49
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Это потому, что вы устанавливаете переменную xy с x = 1 и y = 1, а затем меняете переменную после того, как она была объявлена. Если вы хотите вернуть строку с обновленными значениями, используйте функцию

let x = 1
let y = 1

function returnString(x, y) {
    return `X${x}Y${y}`
}

returnString(x, y)
Ответ принят как подходящий

Это потому, что xy присваивается буквальное значение, а не «шаблон», так сказать, о котором вы думаете. xy присвоены жестко запрограммированные значения X1Y1.

Если вы хотите сделать то, что предлагаете, вам нужно использовать функцию, например:

let z = (a,b) => 'X' + a + 'Y' + b;            

так что всякий раз, когда вы хотите получить значение, вы вызываете z-функцию.

Это в значительной степени точный вариант использования функции практически на любом языке программирования.

let x = 1;
let y = 1;

let xy = () => 'X' + x + 'Y' + y;

x += 1;
y += 1;

xy(); // 'X2Y2'

Это ожидаемое поведение javascript. Поскольку переменные Икс и у используются при генерации строки ху. Обратите внимание, что никакая ссылка на Икс или у не была сохранена, так что ху обновляется при изменении x или y.

Более правильным решением было бы сделать функцию ху.

let xy = () => ('X' + x + 'Y' + y);

Если вам действительно нужно что-то похожее на то, что вы хотите, и избегайте использования (), вместо функции вы также можете использовать геттер в объекте или, что сложнее, определить в окне.

В объекте:

var obj = {
  get xy() {
    return "X" + x + "Y" + y
  }
}
var x = 1, y = 1
alert(obj.xy) // 'X1Y1'
x++; y++;
alert(obj.xy) // 'X2Y2'

В окне:

Object.defineProperty(window, 'xy', {
   get: function() {
      return 'X' + x + 'Y' + y
   }
})

Другие вопросы по теме