JavaScript开发中有时为何用!!
在JS开发中,有时会见到如下形式的代码:
var has_init = !!target.init;
为何不直接用var has_init = target.init;呢?
解释:
!运算符作用于null、undefined时的结果都是true,故对于null、undefined使用两次!,结果就是false。表明未有init代码。也就是区分了:
◆明确定义了target中的init值,自然has_init就是target.init;
◆如果没有设置target中的init值,has_init再经过两次!之后,就成为false了,而不是null或undefined了。
var has_init = !!target.init; //等价于 var has_init = target.init || false;
另外,可参考: