Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не удаляется переменная в цикле for() (https://javascript.ru/forum/misc/69170-ne-udalyaetsya-peremennaya-v-cikle.html)

kraker 02.06.2017 18:29

Не удаляется переменная в цикле for()
 
Добрый день, написал такую функцию

function camelize() {
var next_symbol_upper = true;

for (var i = 0; i < 4; i++) {
delete next_symbol_upper;
console.log(next_symbol_upper);
}
}

но почему-то в console.log выводитя true. Изучаю js может что-то упустил, подскажите пожалуйста.

laimas 02.06.2017 18:35

https://developer.mozilla.org/ru/doc...erators/delete

SV0L0CH 02.06.2017 18:40

Удаляются только поля объектов, в том числе элементы массивов. Переменные в скопе не удаляются.
Кроме того сам оператор delete возвращает логческое значение.
var x="test";
alert(delete x);
alert(x);
var y = {field:"test"};
alert(delete y.field);
alert(JSON.stringify(y));

kraker 02.06.2017 18:42

laimas, я так понимаю саму переменную из памяти уже никак не удалить, если мы ее определили? только поменять ее значение?

laimas 02.06.2017 18:45

delete удаляет свойства из объекта и не влияет на имена переменных.

В примере по ссылке х будет свойством глобального объекта window и может быть удалено, а переменная y нет.

kraker 02.06.2017 18:46

Спасибо большое!

SV0L0CH 02.06.2017 18:46

Походу это особенность связанная с оптимизацией обработки скопов. Если бы возможность реализовали, упала бы производительность и возрасли общие расходы памяти.


Часовой пояс GMT +3, время: 02:21.