#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
, будет работать только вызов имени функции.