这是声明
if( validator(foo) && foo.var1 || foo.var2 || foo.var3 || foo.var4){
//do sometihng
}else{
//do anything because if foo.* doesnt exists i cant do anything
}
语句说:验证器必须有效foo,并返回true,var1或var2 var3或var4必须存在。
如果有人需要解释,只需添加评论即可。这是一个简单的问题,但我试图在我的代码中获得性能。
顺便说一下。有任何书籍或教程都有关于javascript中性能代码的一些信息。??谢谢大家!
答案 0 :(得分:4)
如果validator(foo)
是一项昂贵的操作,您可以颠倒测试的顺序:
if ((foo.var1 || foo.var2 || foo.var3 || foo.var4) && validator(foo)) {
} else {
}
如果validator(foo)
不是特别昂贵,那么可能没有理由花时间考虑如何提高这一小段代码的性能。你的时间有更好的用途。
顺便说一句,此代码基于您的口头描述。您现在的代码与口头描述不兼容,并且很可能是错误的。在JavaScript中,false && false || true
评估为true
。你可能需要
if( validator(foo) && (foo.var1 || foo.var2 || foo.var3 || foo.var4)) {
此外,正如本杰明指出的那样,foo.var1
并未测试foo.var1
是否存在;它检查它是否存在(在foo
或其原型链中),而且不是“虚假”值。 (例如,如果foo.var1
为0,那么它将评估为false
。)您可能正在寻找foo.hasOwnProperty('var1')
等。