2013-03-16 2 views
1

Может быть, это привычка, или, может быть, это для согласованности, но почему var используется в корневой области модуля так много (многие примеры кода показывают это)? Это действительно необходимо? Я имею в виду, что модуль является корневой областью, так ли вы объявили переменную с или без var, прикрепляя ее к одному и тому же объекту в обеих ситуациях? Вы не загромождаете какое-либо пространство имен, нет?Объявление объектов в корневой области модулей nodejs/commonjs - для var или не для var?

qs = require('querystring'); // looks better than 

var qs = require('querystring'); // right? 
+0

У меня нет опыта работы с node.js, но без 'var', это глобальный. – Daedalus

+0

Если он находится в глобальной области видимости, 'var' на самом деле не изменит ситуацию. Оставив это, вы могли бы заставить эти инструкции 'require' больше смотреть' import'-y. – Blender

+0

@Daedalus Это неправда. var не делает что-то «глобальное», оно пересекает области функций. Возьмем, к примеру, этот код. '(функция() { вар Foo; (функция() { Foo = 'бар'; })() console.log (FOO); })(); console.log (foo); ' Вторая консоль.log будет ошибкой ref, поскольку foo не определен. –

ответ

4

Причина в том, что Common JS-модули используются не только в node.js, но и в других средах.

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

Это, говорит, что большинство разработчиков предпочитают использовать var явно в коде по следующим причинам:

  1. Это хорошая практика программирования. Серьезно, программирование - это все о практике. Я так привык объявлять переменные, используя var, что я часто нахожусь с объявлениямив C/C++, а затем у меня крик компилятора.
  2. Переменные, объявленные с использованием var, не могут быть удалены с помощью оператора delete. Иногда я намеренно пропускаю var в глобальных переменных, чтобы впоследствии удалить их и работать в режиме «ниндзя».
Смежные вопросы