Учитывая эти две функции в JavaScript:
function (){
return _.includes(someLongArray, value) && someSimpleValue;
}
В.С.
function (){
return someSimpleValue && _.includes(someLongArray, value);
}
Какой из них будет иметь лучшую производительность? Когда someSimpleValue
является ложным, будет ли он автоматически возвращать возврат? Или он будет проверять, является ли второе истинным или ложным (бесполезная причина, когда &&
имеет некоторые из них false, это уже не может быть правдой)
Второй более эффективен, так как при использовании оператора "&&" короткое замыкание, если первое условие оценивается как false.
Дальнейшее чтение/дублирование:
Вторая быстрее
При использовании оператора && javascript проверяет левую сторону, если он проверяет правильную сторону - если он ложный, он не проверяет правильную сторону.
Поскольку логические выражения оцениваются слева направо, они проверяются на возможную оценку "короткого замыкания", используя следующие правила:
false && (что-либо) - это короткое замыкание, которое вычисляется как false. true || (что-либо), короткое замыкание оценивается как true.
Второй из них будет быстрее из-за "короткого замыкания", и как только первое условие будет ложным, оно "выйдет",