咖啡现有操作员的不同称谓

布赖斯

与此主题相似:CoffeeScript存在运算符和此

咖啡脚本,我在使用elvis运算符时遇到问题:

foo = -> 
  y = foo()
  console.log 'y is null' unless y?
  console.log 'x is null' unless x?

编译为:

var foo, y;
foo = function() {};
y = foo();
if (y == null) {
  console.log('y is null');
}
if (typeof x === "undefined" || x === null) {
  console.log('x is null');
}

输出:

y is null
x is null

因此,问题在于,由于y分配得较早,因此咖啡采用了快捷方式并假定y不能被定义。但是,从函数返回未定义是有效的。

是否存在“更安全”的方法来检查y是否也未定义?

UPDATED阐明了示例和解释:

从注释中可以看出,在第一个if语句(y == null)中使用了double equal而不是(x === null)三重等于,就像第二条if语句一样。聪明的。

列昂尼德·贝沙斯特尼(Leonid Beschastny)

?运算符始终检查值既不是也不nullundefined

y == null是检查的价值绝对正确的做法y是要么null还是undefined在JavaScript中。

例如,以下CofeeScript代码仅检查null值:

do_something() if y is null

编译成

if (y === null) do_something();

因此,虽然y?y == null在JS中)检查nullundefined,但y isnt nully !== null在JS中)仅检查null

检查此答案以获取更多详细信息。

有关JavaScript中的相等性检查的更多信息,请参见此答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章