Этот вопрос является продолжением Can't understand the behavior of deleting vars in JavaScriptПочему hasOwnProperty возвращает истину
Это происходит на Google Chrome: - Случай 1:
var x = 5;
window.x === x // true. x, as it seems, is a property of window
window.hasOwnProperty('x'); // true
delete x; // false
delete window.x; // false;
СЛУЧАЙ 2:
window.x = 5;
delete window.x; // true
СЛУЧАЙ 3:
window.x = 5;
delete x; // true
Если CASE 2 и 3 работают (удаляет x), то почему CASE1 не делает то же самое? Я знаю, что delete удаляет только любое свойство, а в CASE 1 x - это переменная, которая не должна быть свойством. Но функция window.hasOwnProperty возвращает true.
В светлячок для case1: hasOwnProperty возвращает истину, а также удаление х возвращает истину ...
Первый случай будет «истинным», только если 'x' объявлен как' x = 5; ', без' var' – thefourtheye
Невозможно воспроизвести с использованием FF 26.0, FF возвращает 'true' во всех экземплярах. – Zeta
, но когда мы объявляем его как var x, то также это свойство объекта window..so он должен удалить –