В JavaScript, а точнее, в программировании, переменная — это место в памяти компьютера, используемое для хранения данных. Переменные объявляются (присвояются имя, идентификатор) и им может быть присвоено значение сразу или позже, в зависимости от языка. К этой переменной можно будет обращаться позже в программе, вместо того, чтобы явно указывать одно и то же значение снова.
В JavaScript данные передаются в виде значений, эти значения могут быть как примитивными, так и объектными. Для разработчика JavaScript понимание того, как JavaScript обрабатывает данные, имеет решающее значение для владения базовыми знаниями языка.
Примитивные значения включают:
С другой стороны, значения объекта:
Эти типы значений ведут себя по-разному при передаче, рассмотрим фрагмент ниже:
var myName = "Фред";
var другоеИмя = моеИмя;
myName = "Эшли";
console.log(моеИмя); //Эшли
console.log(другоеИмя); //Фред
Обратите внимание, что другое имя осталось прежним, хотя оно выглядит как «копия» моего имени. На самом деле на самом деле произошло то, что когда другому имени было присвоено имя myName, оно не было назначено как копия строки «Fred», а была создана новая строка «Fred». Таким образом, между myName иotherName нет прямой связи. Вот как JavaScript передает примитивные значения.
Значения объекта обрабатываются по-другому, взгляните на фрагмент ниже:
var myObj = {color: "red"};
вар другойObj = myObj;
myObj.color = "синий";
console.log(myObj.color); //синий
console.log(otherObj.color); //синий
Здесь объект был создан и назначен myObj, который затем был назначен другомуObj. Посмотрите, как свойства цвета otherObj и myObj были изменены просто путем изменения свойства цвета myObj. Это связано с тем, что значения объекта передаются как ссылки. myObj не ссылается напрямую на объект, вместо этого он указывает на его ссылку, тогда другомуObj присваивается myObj, который является ссылкой на реальный объект. Следовательно, обе переменные связаны с одним и тем же объектом, поскольку они указывают на одну и ту же ссылку, изменение одной влияет на другую.
Вот почему сравнение (===) двух объектов напрямую возвращает false, вы буквально сравниваете две разные ссылки. Здесь myObj ===otherObj возвращает true, поскольку мы сравниваем одни и те же ссылки.
Надеюсь, это даст вам свежий взгляд на то, как JavaScript работает за кулисами.
До тех пор не допускайте ошибок.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3