if에서 조건은 항상 boolean 이어야 한다.
종종 ===, >,< 등 연산자로 불값을 생성하며 이 모든 연산자는 불값을 산출합니다.
(사용 중인 변수/값은 변하지 않는다)
if에는 boolean 만 들어가면 되기 때문에 이러한 연산자를 꼭 사용해야 할 필요는 없으며.
boolean을 포함하는 변수가 있으면 별도의 연산자 없이 사용할 수 있습니다.
예시
const isLoggedIn = true;
if (isLoggenIn) {
// isLoggenIn 이 true 이기 때문에 내부 함수가 동작합니다.
}
불필요한 코드
const isLoggedIn = true;
if (isLoggedIN === true) {
// 이미 isLoggedIN이 true 이기 때문에 또다른 boolean을 생성할 필요가 없습니다.
}
연산자를 이용해 값을 반전 가능합니다.
const isLoggedIn = true;
if (!isLoggedIn) {
// ! 를 사용해 값반전 했기 때문에 이쪽이 동작 됩니다.
} else {
}
대문자는 소문자보다 작은 값을 가진다
유니코드 순서대로 문자열이 구분된다
a > b = false;
a < b = true;
JavaScript에서는 비교 연산자 없이도 조건문에서 변수를 사용할 수 있다는 점이 중요하다.
다음과 같이 boolean 변수를 고려하는 예를 보면, 이는 확실하게 나타난다.
let isLoggendIn = true;
if (isLoggendIn) {
...
}
let userInput = 'Max';
if (userInput) {
// true
}
if는 참이나 거짓을 반환하는 조건을 원하기 때문에 불리언 변수나 bool값을 제공하기만 하면 추가 비교없이 잘 작동합니다.
JavaScript는 if(또는 조건이 필요한 다른 위치)에 전달한 값을 bool값으로 강제 변환("실제로 변환하지 않고 변환")하려고 합니다. 즉 'MAX'를 boolean으로 해석하려고 하고 문자열이 있는지로 판단하게 됩니다.(예: 0 는 false로 처리되고 다른 모든 숫자는 true 등으로 처리됩니다.)
JavaScript가 실제로 값을 변환하지는 않는다는 것을 이해하시는 게 중요합니다.
userInput 은 위와 같은 조건에서 사용된 후에도 여전히 'Max' 를 유지합니다 - 즉 불리언으로 변환되지 않습니다. 만일 실제로 변환한다면 변수에 저장된 값을 잃게 되기 때문에 끔찍할 겁니다.
대신 아래와 같은 코드는
if (userInput) { ... }
내부적으로 아래와 같이 변환됩니다
if (userInput === true) {
그리고 여기에서 === 연산자 는 불리언을 생성하고 반환합니다. 또한 비교 중인 변수를 건드리지 않습니다 - userInput 은 문자열로 유지됩니다. 하지만 비교에 일시적으로 사용되는 새 불리언을 생성합니다.