将表达式的值存储在变量中是最佳做法,比如
var category = fetchCategory();
switch(category) {
case 'movie': ... break;
case 'music': ... break;
case 'book': ... break;
default: ...
}
对战:
switch(fetchCategory()) {
case 'movie': ... break;
case 'music': ... break;
case 'book': ... break;
default: ...
}
是否有任何显着的性能差异?
答案 0 :(得分:1)
表达式被评估一次:ECMAScript Language Standard表示它是评估表达式的结果,因此该函数只应被调用一次。
我更喜欢第二个例子,如果不打算使用变量,请不要将它放在堆栈上。这更像是精神上的消耗,追踪它。
答案 1 :(得分:0)
据我所知,他们是一样的。
这是小提琴,你可以看到,该函数只被调用一次
http://jsfiddle.net/stratboy/q7ac2gqf/1/
function test(){ console.log('processing') }
switch(test()){
case 1: console.log(1); break;
case 2: console.log(2); break;
default: console.log('default');
}