Каково пространство имен объектов по умолчанию для функций в node.js ?

#javascript #node.js

#javascript #node.js

Вопрос:

В node.js , под каким объектом / пространством имен находятся мои функции? В браузере это «окно». Я думал, что это «глобальное» в узле, но это, похоже, не работает.

 function myfunc() {
    console.log('hello');
}

console.log(global.myfunc); // undefined
  

Комментарии:

1. По умолчанию переменные / функции, объявленные на верхнем уровне, ограничены текущим модулем. Неявно оно не добавляется как свойство global объекта, вам нужно сделать это явно.

Ответ №1:

Каждый файл находится Node внутри своего собственного контекста (называемого модулем), поэтому функция «зарегистрирована» в контексте модуля.

global это контекст, который является общим для модулей, для того, чтобы «зарегистрироваться» в нем, вам нужно присвоить global объекту свойство.

 global.myFunc = function () {};
  

Комментарии:

1. поэтому я предполагаю, что для функций он не переходит автоматически в объект, как это происходит с «окном» в браузере.

2. любое объявление (переменная / функция) не будет доступно вне «модуля» (самого файла), поэтому существует module.exports amp; require для разрешения совместного использования между модулями

Ответ №2:

В обоих браузерах и nodejs нет необходимости использовать window or global , будет работать только вызов имени функции.