«Глобальный» объект в node.js - PullRequest
6 голосов
/ 09 ноября 2010

Я использую 0.3.1-pre Node.js

Делаем это:

typeof global.parseInt

Результаты в

'undefined'

Однако при нажатии [Tab] в консоли после ввода 'global.' дает список функций, включая parseInt.

Так является ли parseInt членом глобального пространства имен *1011* или нет?

Ответы [ 3 ]

13 голосов
/ 07 февраля 2013

Начиная с NodeJS v0.8.14, глобальный режим работает на всех модулях, как объект окна в браузере.

Тест:

a.js:

a1 = console.log;  // Will be accessed from b.js
global.a2 = console.log;  // Will be accessed from b.js

require('./b.js');

b1('a: b1');
b2('a: b2');
global.b1('a: global.b1');
global.b2('a: global.b2');

b.js:

a1('b: a1');
a2('b: a2');
global.a1('b: global.a1');
global.a2('b: global.a2');

b1 = console.log;  // Will be accessed from a.js
global.b2 = console.log;  // Will be accessed from a.js

Запуск выходов a.js:

b: a1
b: a2
b: global.a1
b: global.a2
a: b1
a: b2
a: global.b1
a: global.b2
10 голосов
/ 09 ноября 2010

Очевидно, объект global не является глобальным объектом, так как window находится в браузере.Это (согласно micheil в #nodejs @ freenode) действительно используется только для внутреннего использования.Кое-что о глобальных замыканиях и еще много чего.

parseInt и setTimeout и все эти приятели сами по себе являются глобальными.Не является частью какого-либо видимого глобального объекта.

9 голосов
/ 22 ноября 2012

Определение переменной в app.js без var, так же как myvar='someval' делает ее видимой внутри каждого .js в вашем проекте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...