Если вам нужно, чтобы оба оператора if оценивались до true
, вы должны написать это так:
if(hasExperience === true && amountOfExperience > 5){
return true;
} else {
return false;
}
В вашем примере if(hasExperience === true)
, тогда вы запустите код внутри блока if, else
запустить код внутри блока else.Важно понимать, что это полностью не зависит от того, что находится внутри блока if
.
if(hasExperience === true){
// code inside if block
} else {
// code inside else block
}
Код внутри блока if
оказывается другим оператором if
, который будет return true
if(amountOfExperience > 5)
и ничего не делает иначе.Опять же, это не зависит от другого оператора if
.
if(amountOfExperience > 5)
return true;
Использование &&
означает, что оба оператора должны иметь значение true
, чтобы выполнить код внутри if
блок.Вы можете прочитать больше об этом здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
Кроме того, как некоторые другие заявили, вы можете просто написать свою функцию следующим образом:
function employed(hasExperience,amountOfExperience) {
return hasExperience === true && amountOfExperience > 5;
}
После вашей оценки (hasExperience === true && amountOfExperience > 5)
как логическое значение и возвращая это логическое значение, вы можете избежать выражения if
все вместе.
Попробуйте поэкспериментировать с этим немного больше, чтобы понять, что происходит.
Обновление на основе комментария:
Вы также можете сделать это, используя вложенный if, но это делает код грязным и трудным для чтения.
if (hasExperience === true) {
// only hasExperience is true
if (amountOfExperience > 5) {
// hasExperience is true and amountOfExperience is greater than 5
return true;
} else {
// hasExperience is false and amountOfExperience is less than 5
return false;
}
} else {
// hasExperience is false and we have no idea what amountOfExperience is
return false;
}