为什么逻辑expressio n比 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。答案 0 :(得分:8)
因为它确实需要评估"t"
是否真实。 short-circuit expression return ((val && "t") || "f")
可以扩展为
var and = val ? "t" : val;
var or = and ? and : "f";
return or;
当然,优化编译器可以静态地确定"t"
文字的真实性,并避免两次ToBoolean(val)
,但显然这不是在任何JS引擎中完成的。
答案 1 :(得分:0)