【问题标题】:CommonJS Modules (with nodejs), strangenessCommonJS Modules (with nodejs), 陌生感
【发布时间】:2011-06-01 14:47:05
【问题描述】:

好的,在 NodeJS 的上下文中试验 CommonJS 模块系统。

module.exports = pricingCalculator;

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

这行得通。大概定价计算器的变量声明被提升到函数范围的顶部,因此错误排序并不重要,因为函数无论如何都是通过引用传递的。我明白了。我不明白为什么以下两个版本有效:

module.exports = pricingCalculator;

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

失败。

module.exports = pricingCalculator;

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

失败。好奇地想深入了解发生了什么。

【问题讨论】:

  • 你能找到更详细的问题解释吗?

标签: javascript commonjs


【解决方案1】:

在第一个示例中,函数是在赋值之前定义的(java 脚本方式)。
在第二个和第三个例子中,赋值是按顺序执行的。

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

【讨论】:

  • 好的,基本上,第一个示例被重新排序(或者更确切地说,函数定义被提升到范围的顶部)?
  • 第一个是函数,所以它可以工作。第二个是没有赋值的已知变量,所以它不起作用。第三个尚未定义变量。还是我仍然没有抓住重点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 2015-07-25
  • 2015-08-22
  • 2015-07-17
  • 1970-01-01
  • 2016-08-12
相关资源
最近更新 更多