Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coffeescript 赋值给未声明的变量 请考虑下面的代码。如果我声明导出字段如下: exports = someFunc : -> # blablabla someOtherFunc : ->_Coffeescript - Fatal编程技术网

Coffeescript 赋值给未声明的变量 请考虑下面的代码。如果我声明导出字段如下: exports = someFunc : -> # blablabla someOtherFunc : ->

Coffeescript 赋值给未声明的变量 请考虑下面的代码。如果我声明导出字段如下: exports = someFunc : -> # blablabla someOtherFunc : ->,coffeescript,Coffeescript,它被编译成: var exports; exports = { someFunc: function() {}, someOtherFunc: function() {} }; 但正如您可能已经知道的,我需要导出字段保持未声明状态。换句话说,我需要以某种方式通知编译器不要生成var导出语句。 我知道我可以像那样解决这个问题: exports.someFunc = -> exports.someOtherFunc = -> 但这很混乱,而且看起来很像一个缺陷,因为Coff

它被编译成:

var exports;

exports = {
  someFunc: function() {},
  someOtherFunc: function() {}
};
但正如您可能已经知道的,我需要导出字段保持未声明状态。换句话说,我需要以某种方式通知编译器不要生成
var导出语句。
我知道我可以像那样解决这个问题:

exports.someFunc = ->
exports.someOtherFunc = ->
但这很混乱,而且看起来很像一个缺陷,因为CoffeeScript的本质是减少代码噪音

有没有更好的方法解决这个问题?

我假设您“需要导出字段保持未声明状态”,因为您正在编写一个Node.js模块
exports
已经声明了,是吗?在这种情况下,这个问题及其最重要的答案应该对你有很大帮助:

简而言之,您将执行以下操作:

root = exports ? this

root = 
  someFunc      : -> # blablabla
  someOtherFunc : ->

希望有帮助

我认为您不能直接分配给导出(在nodejs中)。我认为你的代码应该是

module.exports = 
  someFunc : -> # blablabla
  someOtherFunc : ->
在这种情况下,CS将假定模块已经定义,并将简单地输出

module.exports = {
  someFunc: function() {},
  someOtherFunc: function() {}
};

我想到了一个更聪明的方法来解决这个问题,它碰巧更适合
导出
需要,因为它不会擦除以前指定的导出字段:

exports[k] = v for k, v of {
  someFunc : ->
  someOtherFunc : ->
}

但这仍然是一个黑客,它只适用于分配未声明对象的字段。如何分配未声明的变量仍然是一个问题。

感谢您的链接,但您的建议是错误的,因为您只需在第二条语句中重新分配
值。即,首先将
分配给
导出?此
,然后将其重新分配给具有函数的对象。这是正确的<代码>导出
是一个具有模块范围的变量,用作对
模块的引用。导出
。写入
exports=…
不会影响
module.exports
。这是一个容易犯的错误。