Просмотр компилируемой функции делает проблему очевидной:
foo = function(x) {
if (x == null) x = x;
return console.log(x ? "works" : "nope");
};
Как видите, если аргумент x
равен нулю, ему присваивается x
. Так что все равно ноль.
Итак, переименование переменной x
в y
устраняет проблему:
y = true
foo = (x = y) ->
console.log if x then "works" else "nope"
foo() # "nope"