Свойством какого объекта являются let переменные?
var создает переменные как свойство объекта window. А свойством какого объекта являются переменные созданные при помощи let?
|
Цитата:
|
А почему разработчики так сделали? Почему не создали объект?
|
Скорее вопрос "почему var объявленные глобально попадают в window". По логике языка - не должны. Чистое легаси. Переменные это переменные, свойства объекта - это свойства объекта.
|
Вот есть код:
for (let i=0; i < button.length; i++) button[i].onclick = function () { alert(this); } Он ставит функцию обработчик на событие и значение переменной i в придачу. На каждой итерации цикла новое значение i запасает в свой button элемент. А почему var вместо let так не может? Почему бы ему запасти для кажого button свой window.i ? |
Потому что let действует в рамках блока
{ }, а var в рамках функции function() { }. Когда ты пишешь for (let i=0; i < button.length; i++) button[i].onclick = function () { alert(i); }это можно считать шорткатом для for (let i=0; i < button.length; i++) { button[i].onclick = function () { alert(i); } }соответственно в рамках блока let i каждый раз своя, и при вызове созданной функции берётся i из этого блока. А когда ты пишешь так: for (var i=0; i < button.length; i++) { button[i].onclick = function () { alert(i); } }это шорткат для var i; for (i=0; i < button.length; i++) { button[i].onclick = function () { alert(i); } }и, соответственно, когда ты кликаешь, берётся то значение i которое осталось последним в рамках вышестоящей функции(или глобала), а не уникальное для блока. Ксли ты сделаешь так: for (var i=0; i < button.length; i++) button[i].onclick = function () { alert(i); } i='от так уот'; То при клике alert тебе даст именно последнее значение которое приняло i в рамках функции. А вообще, прочитай ты уже чёртов учебник. |
Я так понял мой вопрос не до конца поняли здесь. Попробую сформулировать иначе. Верно ли что var создает указатель на переменную, в то время как let саму переменную?
|
Цитата:
Цитата:
|
Цитата:
Дело не в переменных. Ты совсем не понимаешь javascript. Вообще. Читай, долбанный, учебник. Сначала. Иначе так и будешь задавать безумные вопросы. |
Цитата:
В javaScript программист не может создавать либо освобождать переменные. Этим занимается интерпретатор по своему усмотрению. let var const - это объявления т.е. программист объявляет что собирается использовать такие то имена для хранения данных. На объявления применяется концепция области видимости. Цитата:
Язык JavaScript использует очень высокий уровень абстракций в своем описании и частая проблема новичков в том что они выдумывают себе как должна вести себя программа/скрипт для того чтобы дополнить свое незнание всех слоев этих абстракций а потом долго тупят не понимая почему это работает не так как они придумали. |
Часовой пояс GMT +3, время: 03:17. |