避免在咖啡脚本中自动生成 returns
avoiding auto generated returns in coffee script
如何去除咖啡脚本中自动生成的 returns:
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;
});
});
};
...但我想要一个没有 returns:
的解决方案
createHash = function(password) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(password, salt, function(err, hash) {
return hash;
});
});
};
我如何完成这项工作?
默认情况下,CoffeeScript 函数 return 它们最后一个表达式的值,因此:
f = ->
# Bunch of interesting things...
6
相当于:
f = ->
# Bunch of interesting things...
return 6
因此 return
出现在转译的 JavaScript 中。
在 JavaScript 中,没有显式 return
的函数隐式 returns undefined
所以这些 return 是一样的:
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 没有空 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;
});
});
};
如何去除咖啡脚本中自动生成的 returns:
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;
});
});
};
...但我想要一个没有 returns:
的解决方案createHash = function(password) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(password, salt, function(err, hash) {
return hash;
});
});
};
我如何完成这项工作?
默认情况下,CoffeeScript 函数 return 它们最后一个表达式的值,因此:
f = ->
# Bunch of interesting things...
6
相当于:
f = ->
# Bunch of interesting things...
return 6
因此 return
出现在转译的 JavaScript 中。
在 JavaScript 中,没有显式 return
的函数隐式 returns undefined
所以这些 return 是一样的:
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 没有空
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;
});
});
};