Что такое корневой объект в Node.js

Вы можете узнать global объект в Node.js:

{Object} Глобальный объект пространства имен.

В браузерах область верхнего уровня является глобальной областью. Это означает, что в браузерах, если вы находитесь в глобальная область var что-то определит глобальную переменную. В Node это отличается. Область верхнего уровня не является глобальной областью; вар что-то внутри модуля Node будет локальным для этого модуля.

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

Хотя кажется, что я могу использовать root так же, как global:

test1.js

foo = 'bar'; // foo is defined in the global scope (no var in front of foo)

test2.js

require('./test1.js');
console.log(root.foo);

В оболочке:

$ node test2.js
bar

Когда я проверяю global и root в оболочке, они выглядят одинаково. Попробуйте:

$ node
> global
...
> root
...

Итак, кажется, что root совпадает с global. Но почему избыточность? Почему root не документировано? Это устарело?

Ответ 1

Это точно так же, как global.

Есть несколько недокументированных свойств, подобных этому. Они датируются ранними днями node, но остались в них, чтобы поддерживать обратную совместимость, и нет необходимости нажимать их.

Вы не должны использовать их в любом новом коде, так как они могут быть удалены в любое время.