Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   with. Что в нем неочевидного? (https://javascript.ru/forum/misc/48500-chto-v-nem-neochevidnogo.html)

foo 06.07.2014 17:22

with. Что в нем неочевидного?
 
Взялся сейчас за оператор with, но не могу найти нормальной исчерпывающей инфы по нему. Постоянно наталкиваюсь на какие-то беглые поверхностные статейки, где утверждается, что он че-то там неочевидно себя ведет, бла-бла-бла, не рекомендуют. Но, при этом никакой конкретики, а примеры, которые приводяться, не кажутся мне неочевидными, а кажутся, скорей следствием непонимания авторами того, что они пишут и утверждают. Я ща взял, поигрался с ним в консоли, вроде нормально себя ведет, как ожидается. Может кто покажет неочевидные моменты? Хотелось бы разобраться.

Внимание! Вопросы производительности и оптимизации меня в данном случае не интересуют!

Спасибо.

kobezzza 06.07.2014 18:11

var a = {b: 2};

with (a) {
    b = 3; // a.b = 3;
    c = 4; // global.c = 4; WTF?!
}

foo 06.07.2014 18:14

Цитата:

Сообщение от kobezzza
WTF?!

Ящетаю, абсолютно очевидно, что тут происходит.

kobezzza 06.07.2014 18:17

Цитата:

Сообщение от foo (Сообщение 319710)
Ящетаю, абсолютно очевидно, что тут происходит.

Новички очень часто делают тут ошибки, в добавок сжимальщики JS плохо сжимают такие конструкции и в итоге эту конструкцию выкинули из стандарта, т.е. она оставлена для совместимости старого кода и в новом её лучше не юзать, а так дело твоё.


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