谁能解释为什么这行不通?我只是从CoffeeScript页面的“立即尝试Coffeescript”开始运行,而我的Chrome控制台记录了“nope”,如下所示
x = true
foo = (x = x) ->
console.log if x then "works" else "nope"
foo() # "nope"
如果我在参数定义中将x = true更改为y = true并将(x = x)更改为(x = y)
太感谢了!
最佳答案
查看函数的编译方式使问题显而易见:
foo = function(x) {
if (x == null) x = x;
return console.log(x ? "works" : "nope");
};
如您所见,如果
x
参数为null,则会为其分配x
。因此它仍然为空。因此,将
x
变量重命名为y
可解决此问题:y = true
foo = (x = y) ->
console.log if x then "works" else "nope"
foo() # "nope"
关于javascript - coffeescript默认参数在未传递时未分配给与arg同名的外部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7126912/