оператор удаления с переменными var и non var
312 просмотра
4 ответа
Я пытался удалить переменную в JavaScript с помощью оператора удаления, но обнаружил некоторые проблемы. Ребята, пожалуйста, объясните приведенный ниже код и почему это происходит.
>> var a = 5;
>> delete a
false
>>a
5
>> b=5;
>>delete b
true
>>b
ReferenceError b is not defined
почему var a = 5 и b = 5 разные?
Автор: jforjs Источник Размещён: 12.11.2019 09:47Ответы (4)
6 плюса
Когда переменная создается с помощью объявления переменной (т. Е. С использованием var ), она создается с установленным для нее флагом удаления false .
Когда переменная создается неявно путем присваивания без объявления, ее удаляемый флаг устанавливается в значение true .
Особенностью глобального контекста выполнения является то, что переменные также становятся свойствами глобального объекта (этого не происходит в коде функции или eval). Итак, когда вы делаете:
var a;
Тогда a является переменной, а также свойством глобального объекта (окна в браузере), и его удаляемый флаг имеет значение false . Но:
a = 'foo';
создает как глобальную переменную без объявления, поэтому его deleteable флаг устанавливается в верно .
В результате вы можете удалить глобальные переменные, созданные неявно, но не те, которые созданы объявлениями (включая объявления функций).
Автор: RobG Размещён: 11.03.2014 06:116 плюса
Без использования var
присваивание с =
оператором всегда присваивает свойство, во втором случае объект неявно является глобальным объектом ( window
в вашем браузере).
delete
Оператор только для удаления свойств на объектах, а не обычные переменные.
3 плюса
Оператор delete удаляет объект, свойство объекта или элемент из массива. Оператор также может удалять переменные, которые не объявлены с помощью оператора var.
delete objectName.property
delete objectName[index]
Автор: Arjit
Размещён: 11.03.2014 05:56
1 плюс
Оператор delete удаляет свойство из объекта, а не обычные переменные. Здесь в этом случае объект является глобальным неявно.
На примечании стороны: -
Когда вы пишете, var x = 5
он объявляет переменную x в текущей области видимости, т.е. в контексте выполнения. Если объявление появляется в функции, то объявляется локальная переменная, а если она находится в глобальной области видимости, то объявляется глобальная переменная.
Принимая во внимание, что, когда вы говорите x = 5
, тогда это просто присваивание собственности. Сначала он пытается разрешить x в цепочке областей видимости. Если он находит x
где-либо в этой цепочке областей действия, он выполняет присваивание, в противном случае он создает x
свойство для глобального объекта.
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- javascript Как я могу украсить код JavaScript с помощью командной строки?
- javascript Динамически загружать файл JavaScript
- javascript Экранирование строк HTML с помощью jQuery
- javascript Обнаружение неопределенного свойства объекта
- javascript Как сравнить HTML-сущность с JQuery
- javascript Есть ли HTML напротив <noscript>?
- javascript Есть ли функция "существует" для jQuery?
- javascript Как заставить клиентов обновлять файлы JavaScript?
- javascript Замена n-го экземпляра совпадения с регулярным выражением в Javascript
- javascript Сделать окно браузера мигающим в панели задач