Модули CommonJS (с nodejs), странность - PullRequest
1 голос
/ 30 декабря 2010

Хорошо, экспериментируем с модульной системой CommonJS в контексте NodeJS.

module.exports = pricingCalculator;

function pricingCalculator (options) {
  var target = {};
  return target;
}

Это работает. Предположительно, объявление переменной priceingCalculator находится в верхней части области действия функции, поэтому неправильный порядок не имеет значения, так как функция все равно передается по ссылке. Я понимаю. Я не понимаю, почему работают следующие две версии:

module.exports = pricingCalculator;

var pricingCalculator = function (options) {
  var target = {};
  return target;
}

Неудача.

module.exports = pricingCalculator;

pricingCalculator = function (options) {
  var target = {};
  return target;
}

Неудача. Любопытно глубоко понять, что происходит.

1 Ответ

0 голосов
/ 30 декабря 2010

В первом примере функция определяется перед присваиванием (путь сценария java).
Во втором и третьем примерах присваивания выполняются последовательно.

http://studiokoi.com/blog/article/execution_order_of_functions_and_variables_in_javascript_and_actionscript

...