Как правильно присваивать переменную?

205
16 мая 2018, 09:40

Почему такая конструкция работает:

let outputData = document.querySelector('#outputData');
outputData.innerHTML = 'Введите значение';

А вот такая уже нет:

let outputData = document.querySelector('#outputData').innerHTML;
outputData = 'Введите значение';

Складывается впечатление, что методы нельзя добавлять в переменную. Или возможно я не до конца понимаю особенности присваивания переменной.

Кто может объяснить эту ситуацию?

Answer 1

Складывается впечатление, что методы нельзя добавлять в переменную.

Методы можно добавлять в переменную, однако, в данном случае в коде нет методов.

innerHTML - это свойство, возвращающее строку.

возможно я не до конца понимаю особенности присваивания переменной.

Особенностей нет: присваивая что-то в переменную, никак не влияет на предыдущее значение переменной.

var a = {};
a = 'a';
a = 3;

Во всех трех случаях предыдущее значение теряется и никак не меняется.

Почему работает первый вариант?

В первом варианте: outputData.innerHTML = 'Введите значение';

Нет присваивания переменной. Есть изменение значения свойства объекта.

При этом, .innerHTML еще и особое свойство, которое разбирает переданную строку и генерирует нужный html, который затем и отображается.

Answer 2

querySelector возвращает ссылку на объект, а innerHTML - строка, базовые типы в js не ссылочные, поэтому когда вы приравниваете строке, то переменная будет типа string, а он базовый и ее изменение не будет менять ее в первоначальном месте. Например:

const simpleType = 'string' 
let simpleType2 = simpleType 
 
simpleType2 = 'another string' 
 
// should be false 
console.log(simpleType === simpleType2) 
 
const obj = { string: 'string' } 
const obj2 = obj 
 
obj2.string = 'another strig' 
 
// should be true 
console.log(obj.string === obj2.string)

READ ALSO
Поиск медианы и удаление элементов

Поиск медианы и удаление элементов

Не могу в цикле удалить все элементы массива

216
Как разделить переменную на букву и число

Как разделить переменную на букву и число

Есть переменная a, равная 'A13', как разделить ее на букву A и число 13, чтобы получилось var b=['A', '13']

217
JSON обработка данных вывод в HTML

JSON обработка данных вывод в HTML

Решил попробовать поработать с VK_API не зная JS, JSON, JQuery

205