我最近遇到了这行代码,想了解它的意义和作用,因为我的javascript-foo不是很热:
if ((+!!config.template) + (+!!config.templateUrl) !== 1) {}
从我可以收集的内容中,检查是否设置了任一选项(因此必须设置模板或templateUrl,而不是两者都设置或不设置)
所以,如果设置了config.template,
如果未设置config.template,
如果那时你将它应用于config.templateUrl,如果设置则最终为1,否则为0
所以最后的测试是查看config.template和config.templateUrl的总和是否为1(即设置了一个或另一个)
这是有效的推理吗?
答案 0 :(得分:3)
将bool值强制转换为Number
,前缀为+。
!!
检查template
上是否存在属性config
。如果找不到模板,!!
通常会返回false
,但是通过预先+
,它会返回0
。两个+!!
语句都返回数字,当它们一起添加时,它们将为0或1.
如果两个或都没有设置/为真(!== 1
)