Поведение оператора удаления в JavaScript - PullRequest
1 голос
/ 10 августа 2011

Кажется, в JavaScript вы не можете delete аргументы функции, но вы может delete глобальные переменные из функции.

Почему это поведение?

var y = 1;
(function (x) { return delete y; })(1); // true

(function (x) { return delete x; })(1); // false

Ответы [ 2 ]

5 голосов
/ 10 августа 2011

На самом деле ни один из них не должен возвращать true, и на самом деле они не возвращаются в Firefox или Chrome (не тестировались в других браузерах). Я предполагаю, что вы проверили это с Firebug или другой консолью браузера, которая меняет положение вещей из-за консоли, использующей eval(). delete только удаляет свойства объекта и обычно не может удалить переменную, объявленную с использованием var, вне зависимости от области действия.

Вот отличная статья Кангакса на эту тему: http://perfectionkills.com/understanding-delete/

4 голосов
/ 10 августа 2011

Редактировать: Оба возвращают false при обычном использовании (т.е. не в Firebug или консоли браузера, которые используют eval()).См. ответ Тима Дауна (он должен быть принятым).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...