Javascript if 语句的微优化
Javascript micro optimisation for if statement
我是 JavaScript 的新手,我有一个关于如何优化 if 语句的问题。
我将向您展示两个场景。
//first
var number = 10;
var calculationOneResult = functionOne(number);
var calculationTwoResult = functionTwo(number);
if (calculationOneResult === true) {
//stuff
} else if (calculationTwoResult === true) {
//more stuffs
}
//second
var number = 10;
if (functionOne(number) === true) {
//stuff
} else if (functionTwo(number) === true) {
//more stuffs
}
这是我的问题:
在第一种情况下,我计算了两次。
在第二个中,如果第一个函数 returns true
,它会计算第二个 elseif
语句还是会在执行 stuff
之后跳过它?
如果 if
表达式测试为 true
,则 else
子句中的任何内容都不会执行,因此在这种情况下,您的代码的第二个版本肯定会保存函数调用。
以下代码:
if(statement1) {
// stuff
} else if(statement2) {
// other stuff
}
等同于
if(statement1) {
// stuff
} else {
if(statement2) {
// other stuff
}
}
因为 JavaScript 中没有 elseif
- 请参阅 documentation。
所以答案是 statement2
中的任何函数都将被简单地跳过。
我是 JavaScript 的新手,我有一个关于如何优化 if 语句的问题。
我将向您展示两个场景。
//first
var number = 10;
var calculationOneResult = functionOne(number);
var calculationTwoResult = functionTwo(number);
if (calculationOneResult === true) {
//stuff
} else if (calculationTwoResult === true) {
//more stuffs
}
//second
var number = 10;
if (functionOne(number) === true) {
//stuff
} else if (functionTwo(number) === true) {
//more stuffs
}
这是我的问题:
在第一种情况下,我计算了两次。
在第二个中,如果第一个函数 returns true
,它会计算第二个 elseif
语句还是会在执行 stuff
之后跳过它?
如果 if
表达式测试为 true
,则 else
子句中的任何内容都不会执行,因此在这种情况下,您的代码的第二个版本肯定会保存函数调用。
以下代码:
if(statement1) {
// stuff
} else if(statement2) {
// other stuff
}
等同于
if(statement1) {
// stuff
} else {
if(statement2) {
// other stuff
}
}
因为 JavaScript 中没有 elseif
- 请参阅 documentation。
所以答案是 statement2
中的任何函数都将被简单地跳过。