Сообщение от demoniqus
|
Но, если не предполагается работа в строгом режиме, то в таком случае, на мой взгляд, var становится просто мусором, загрязняющим код и делающим его менее читабельным (из-за этого var можно принять глобальную переменную за локальную и потом долго отлавливать ошибки)))) )
Про чрезмерное использование глобальных переменных - тут вообще пофиг какой режим: строгий или "лояльный" - чем их меньше, тем лучше))))
Что же до случайного переопределения глобальной переменной, то var не всегда поможет - все зависит от доступности данной глобальной переменной на изменение. Я для теста подключил тот же jQuery, а потом через var $ = 'fvbfdbgvfd' спокойно заменил значение... window.Math - тоже поддался изменению...
Про стандарт же и использование безVARного объявления для обратной совместимости запомню))) Хотя тут же возникает вопрос: если стандарт предписывает все же объявлять переменную через var, то как, находясь внутри функции, объявить именно глобальную переменную? Только без var это и можно сделать...
|
1) Если не предполагается работа в строгом режиме и если вы работаете только как 1 разработчик. Вы всегда должны писать устойчивый код который не сломается ни при каких обстоятельствах (неважно включил другой разработчик строгий режим или нет). Это просто дает возможность командной разработки. Лучше сразу учиться писать правильно, а не переучиваться.
2) "var" не может стать мусором загрязняющим код как и любой другой оператор. Это синтаксис языка которому надо следовать. Он не может ни запутать, ни сделать код менее читабильным. Это тоже самое что говорить что if () {} else {} - загрязняющая код конструкция (не надо сейчас говорить что это можно заменить на тернарные операторы или писать без фигурных скобок, я лишь хочу сказать что синтаксис языка не делает код нечитабильным. Исключение - те кто не знает как писать правильно.)
3) Вы согласились что глобальные переменные - плохо, тогда получается что в 2/3 случаев вы всетаки пишите его. Должно быть единообразие - это просто хороший тон - писать все в одном стиле.
4) "потом через var $ = 'fvbfdbgvfd' спокойно заменил значение... window.Math - тоже поддался изменению..." - именно об этом я и говорил - в локальных функциях надо всегда писать вар чтобы не испортить глобальные переменные.
5) "Хотя тут же возникает вопрос: если стандарт предписывает все же объявлять переменную через var, то как, находясь внутри функции, объявить именно глобальную переменную? Только без var это и можно сделать..." чтобы создать/изменить глобальную переменную из функции можно обратиться к window, это даст читающему код понять что это именно глобальная переменная а не просто переменная родитльского scope.