是switch语句的表达式,每次求值一次或对每种情况求值一次

Is the expression of a switch statement evaluated once or for each case?

本文关键字:一次 情况 switch 语句 表达式      更新时间:2023-09-26

将表达式的值存储在变量中是否是最佳实践,例如

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: ...
}

是否有显著的性能差异?

表达式求值一次:ECMAScript语言标准规定这是表达式求值的结果,所以函数应该只调用一次。

我更喜欢第二个例子,如果一个变量不打算被使用,就不要把它放在堆栈上。跟踪它更像是一种精神消耗。

据我所知,它们是一样的。

这是小提琴,如你所见,函数只被调用一次

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');
}