为什么逻辑表达式比if-else或inline-if-else慢两倍?
function logicalExp(val) {
return val && "t" || "f";
}
function inlineIfElse(val) {
return val ? "t" : "f";
}
function ifElse(val) {
if (val) return "t";
else return "f";
}
- 所有函数的计算结果都相同。
- 所有函数都从
1
和0
数组传递值,请参阅此 jsperf test .
最佳答案
因为它确实需要评估“t”
是否真实。 short-circuit expression return ((val && "t") || "f")
可以扩展为
var and = val ? "t" : val;
var or = and ? and : "f";
return or;
当然,优化编译器可以静态确定 "t"
文字的真实性,并避免执行两次 ToBoolean(val)
,但显然这并没有完成在任何 JS 引擎中。
关于javascript - 为什么 `exp && "t"|| "f"` 比 inline-if-else 慢很多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30217942/