Intereting Posts
Запретить разрыв страницы в печати (или предварительный просмотр) в строке таблицы создать простой узел js-сервера и клиента Android WebView загружается пустым при просмотре вложенных списков html Проверка HTML на локальной машине Bootstrap Nav исчезает при изменении размера анимированный фильтр смазки css в jquery Javascript: пытается показать различные формы, основанные на выпадающем значении? Какую кодировку символов следует использовать для веб-страницы, содержащей преимущественно арабский текст? Утф-8 в порядке? Получить идентификатор элемента, который нажал Вертикально центрируйте несколько ящиков с помощью CSS Как определить, когда страница выходит из полноэкранного режима? отобразить html-файл в div Динамически добавить отредактировать удалить вкладку начальной загрузки Хороший способ перенаправления с помощью запроса POST? Как заставить txt-файл читать HTML-документ браузерами?

почему переменная ‘name’ не должна быть инициализирована после первого использования

Всякий раз, когда я инициализирую переменную под названием «имя», она сохраняет свое значение через страницы.

Как это:

page1.html

  var name = prompt("What's your name?"); alert(name);   Page2  

https://stackoverflow.com/questions/26418153/why-does-variable-name-doesnt-need-to-be-initialized-after-first-use-javascri/page2.html

   alert(name);   

Таким образом, на обеих страницах имя переменной сохраняет значение того, что было дано в подсказке первой страницы, обе страницы предупреждают одно и то же, может кто-нибудь объяснить мне, почему это происходит?

Поведение, которое вы видите, не является нормальным, и не будет работать почти для любой другой переменной. name на самом деле является зарезервированной переменной в Javascript, поэтому вы видите интересное поведение.

Все переменные в Javascript являются свойствами объекта window . Если вы создаете переменную с именем age , вы также можете получить к ней доступ в window.age . window.name – это специальное свойство текущего windows браузера, которое позволяет ему присваивать имя, и это значение может сохраняться между страницами.

Если вы измените имя своей переменной на age , она вернется к работе как ожидалось – переменная будет пуста в page2.html.

Немного больше о window.name

Глобальной переменной name является свойство window.name . Это строка, которая действительно сохраняется на разных загрузках страниц в том же контексте просмотра – если вы открываете вторую страницу на новой вкладке, она больше не должна «работать».

Чтобы этого избежать, используйте вместо этого безопасное имя для своей переменной или оберните свой код в IIFE .

Он не будет сохранять свою ценность через страницы, и обе страницы не будут предупреждать одно и то же.

На вашей странице должен быть другой код, который задает name для некоторого значения.