2015-01-11 6 views
0

Можно ли это сделать, написав некоторый код, чтобы перехватить объявление глобальной видимости по умолчанию или через параметр в самом javascript-модуле, к которому у каждой программы или функции есть доступ?Имейте javascript объявлять (по умолчанию) необъявленные переменные в текущую локальную область (на основе первого использования) вместо глобальной области?

Что я имею в виду, если бы я мог, в верхней части программы (или функции), сообщить механизму javascript использовать локальную область для необъявленных переменных вместо глобальной области ... тогда, когда механизм javascript скомпилирует каждую функцию , он объявит их в локальном масштабе.

Я понимаю, что если вы хотите объявить переменную за пределами текущей области, это должно быть сделано явно, так как никто не знает, где вы хотите ее объявить, но я думаю, что по умолчанию глобальная область выходит слишком много места для ошибок и сил тоже много типизации операторов var в каждой функции, поэтому я хотел бы изменить значение по умолчанию в своих программах, если это возможно.

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

Я бы никогда не хотел, чтобы необъявленные переменные попадали в любую более высокую область действия, чем область, в которой они впервые используются. Нет никакой ценности в том, что они по умолчанию имеют глобальную область видимости.

Я знаю, что я могу эксплицировать объявления переменных в текущей области (или глобальной области), но хотел бы избежать этого и использовать более полезный по умолчанию, чем глобальная область применения по умолчанию, встроенная в javascript.

Я также знаю, что могу использовать «use strict», чтобы принудительно объявлять все переменные. Не желая обсуждать правильное или неправильное, но просто спрашивает, есть ли способ изменить значение по умолчанию на локальную область, а не глобальную область для данной функции.

+1

Я не знаю такого варианта. Но вы можете «использовать строгую», чтобы ограничить возможности. – Sebas

+2

Какова основная проблема, по которой вы смотрите вниз по этому пути? – charlietfl

+3

Используйте [CoffeeScript] (http://coffeescript.org), он решает эту особую досаду и делает синтаксис Javascript более привлекательным в целом IMO. – deceze

ответ

1

Нет, Javascript ведет себя так, как есть, нет переключателя, чтобы перевернуть его правила объявления переменной на его голове.

'use strict' - это вариант, который вы можете использовать, чтобы помочь вам catch problems more easily, но это не меняет правил.

Что вы хотите - это другой язык; например CoffeeScript, препроцессор Javascript, который, между прочим, позволяет решить эту проблему variable declaration issue явно.

+1

IMO CoffeeScript для JavaScript, поскольку LESS/SASS - это CSS. Как только вы привыкнете к этому, это невообразимо, вернувшись к простому металлическому способу писать вещи.Это настолько хорошо интегрировано в мою среду IDE, что нет никакой дополнительной нагрузки; Я просто пишу код в CoffeeScript, моя IDE компилирует его прозрачно, я использую файлы .js, как обычно, в моем коде. Отладчик Chrome может даже прозрачно отображать исходный код CoffeeScript, это замечательно. – deceze

 Смежные вопросы

  • Нет связанных вопросов^_^