为什么以下代码显示unique
的错误?
do (unique = (-> ->), x = unique()) ->
do (y = x) ->
console.log "x is y:", x is y
输出
ReferenceError: unique is not defined
答案 0 :(得分:1)
我已将您的代码简化为此(因为它是导致错误的原因)
do (unique = (-> ->), x = unique()) ->
console.log "x is y:", x is y
编译版本为:
(function(unique, x) {
return console.log("x is y:", x === y);
})((function() {
return function() {};
}), unique());
也可以这样写:
a=function(unique,x) {
return console.log("x is y:", x === y);
}
b=(function() {
return function() {};
})
a(b,unique)
如您所见,范围内的任何位置都未定义最后一个唯一值。
这就是您收到此错误的原因。
我建议您提取 unique
:
unique = (-> ->)
do (unique, x = unique()) ->
do (y = x) ->
console.log "x is y:", x is y