我已经和一位同事讨论这个话题大约一个星期了。我非常喜欢速记代码,尽可能使用三元组等。最近,他一直在指责我使用双感叹号。在运行了无数次测试之后,我开始同意他的观点……在我的代码中使用双感叹号可能并不明智。考虑一下:
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
上面的示例按预期工作。然而,如果我们检查一个可能返回未定义的变量,我们会得到一个错误,尤其是在 IE7 中。但是,如果我们在控制台中运行它,我们会得到预期的结果:
if(randomvar) alert('Works');
使用这种方法,如果变量未定义,它会静默失败。这让我完全质疑使用双感叹号。是否存在实际上使该操作员受益的情况?