避免在咖啡脚本中自动生成返回
Posted
技术标签:
【中文标题】避免在咖啡脚本中自动生成返回【英文标题】:avoiding auto generated returns in coffee script 【发布时间】:2017-03-12 08:49:52 【问题描述】:如何摆脱咖啡脚本中自动生成的回报:
createHash = (password) ->
bcrypt.genSalt 10, (err, salt) ->
bcrypt.hash password, salt, (err, hash) ->
hash
我明白了……
createHash = function(password)
return bcrypt.genSalt(10, function(err, salt)
return bcrypt.hash(password, salt, function(err, hash)
return hash;
);
);
;
...但我想要一个没有回报的解决方案:
createHash = function(password)
bcrypt.genSalt(10, function(err, salt)
bcrypt.hash(password, salt, function(err, hash)
return hash;
);
);
;
我如何完成这项工作?
【问题讨论】:
重复:***.com/q/7391493/660921 【参考方案1】:默认情况下,CoffeeScript 函数返回其最后一个表达式的值,因此:
f = ->
# Bunch of interesting things...
6
相当于:
f = ->
# Bunch of interesting things...
return 6
因此return
s 出现在转译的 javascript 中。
在 JavaScript 中,没有显式 return
的函数会隐式返回 undefined
,因此它们返回相同的内容:
function()
function() return
function() return undefined
把这两件事放在一起会给你两个选择:
在函数底部抛出 undefined
以使用显式的 return
绕过隐式:
createHash = (password) ->
bcrypt.genSalt 10, (err, salt) ->
bcrypt.hash password, salt, (err, hash) ->
hash
undefined
undefined
或者更好的是,使用空的return
明确表明您没有返回任何内容:
createHash = (password) ->
bcrypt.genSalt 10, (err, salt) ->
bcrypt.hash password, salt, (err, hash) ->
hash
return
return
第二个选项应该为您提供您正在寻找的 JavaScript:
var createHash;
createHash = function(password)
bcrypt.genSalt(10, function(err, salt)
bcrypt.hash(password, salt, function(err, hash)
return hash;
);
);
;
【讨论】:
以上是关于避免在咖啡脚本中自动生成返回的主要内容,如果未能解决你的问题,请参考以下文章
使用咖啡脚本自动完成放置后无法从 getPlace 获取价值
避免使用promises中的内存泄漏并在咖啡脚本中循环(无需等待)