Кажется, в JavaScript вы не можете delete аргументы функции, но вы может delete глобальные переменные из функции.
delete
Почему это поведение?
var y = 1; (function (x) { return delete y; })(1); // true (function (x) { return delete x; })(1); // false
На самом деле ни один из них не должен возвращать true, и на самом деле они не возвращаются в Firefox или Chrome (не тестировались в других браузерах). Я предполагаю, что вы проверили это с Firebug или другой консолью браузера, которая меняет положение вещей из-за консоли, использующей eval(). delete только удаляет свойства объекта и обычно не может удалить переменную, объявленную с использованием var, вне зависимости от области действия.
true
eval()
var
Вот отличная статья Кангакса на эту тему: http://perfectionkills.com/understanding-delete/
Редактировать: Оба возвращают false при обычном использовании (т.е. не в Firebug или консоли браузера, которые используют eval()).См. ответ Тима Дауна (он должен быть принятым).
false