【发布时间】:2011-11-20 13:28:46
【问题描述】:
我已经与一位同事就这个话题进行了大约一周的辩论。我非常喜欢速记代码,尽可能使用三元组等。最近,他一直在指责我使用双感叹号。经过多次测试后,我开始同意他的观点……在我的代码中使用双感叹号可能并不明智。考虑一下:
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
上面的示例按预期工作。然而,如果我们检查一个可能返回未定义的变量,我们会得到一个错误,尤其是在 IE7 中。但是,如果我们在控制台中运行它,我们会得到预期的结果:
if(randomvar) alert('Works');
使用这种方法,如果变量未定义,它会静默失败。这让我完全质疑使用双感叹号。有没有什么情况可以让这个运营商真正受益?
【问题讨论】:
标签: javascript operators boolean shorthand