给出如下switch语句:
switch(text.toLowerCase()) {
case("aaa"):
doSomething();
return;
case("bbb"):
doSomething();
return;
case("ccc"):
doSomething();
return;
default:
return;
}
开关本身内部的表达式被调用多少次?
在每次检查的情况下都将调用toLowerCase()(这将意味着最好将该表达式插入该开关之前,并在开关内使用该变量)
还是会一次评估toLowerCase()并在所有情况下都使用最终表达式的值?
switch
语句中的表达式仅被调用一次。
与if
/ else if
语句相比(这是有效的方法,首先将结果分配给变量会更好)。[]
[如果您想对此绝对确定,则可以使用自己的toLowerCase()
版本(出于测试目的而覆盖String.prototype
)来自己进行测试:
var nbTime = 0;
var text = '';
String.prototype.toLowerCaseNbTime = function() {
console.log(++nbTime) // -> 1
return this.toLowerCase();
}
switch(text.toLowerCaseNbTime()) {
case("aaa"):
doSomething();
return;
case("bbb"):
doSomething();
return;
case("ccc"):
doSomething();
return;
default:
return;
}