js 논리연산에서는 0, "", null, false, undefine, NaN 등은 모두 false로 판정되고, 나머지는 모두 true로 판정됩니다.
||첫 번째 피연산자를 먼저 계산합니다. true로 변환할 수 있으면 왼쪽의 표현식 값을 반환합니다. 그렇지 않으면 두 번째 피연산자를 계산합니다. || 연산자의 피연산자가 부울 값이 아니더라도 반환되는 값의 유형에 관계없이 부울 값으로 변환될 수 있으므로 부울 OR 연산으로 간주할 수 있습니다.
부울이 아닌 값을 반환하는 기능을 활용하세요. 부울이 아닌 피연산자에 대해 ||를 사용하여 대체 값 집합에서 처음으로 정의된 null이 아닌 값을 선택하세요(첫 번째 값은 false가 아닌 값입니다).
예:
var max = max_width || obj.max_width ||
var attr = attr || 이 작업은 변수가 정의되었는지 확인하는 데 자주 사용됩니다. 정의되지 않은 경우에는 함수 매개변수의 기본값을 정의할 때 더 유용합니다.
&&, 첫 번째 표현식을 먼저 평가하고 false인 경우 두 번째 표현식은 처리되지 않습니다. 그렇지 않으면 후속 표현식이 계속 처리됩니다. 왼쪽에서 오른쪽으로 true가 아닌 첫 번째 표현식의 값을 선택하고, 찾지 못한 경우 마지막 표현식의 값을 반환합니다.
예: (맛을 신중히 고려해야 합니다)
2 && 's1' && '123' && 'sss' 표현식의 값은 'sss'와 같습니다.
2 && 's1' && '' && 'sss' 표현식의 값은 ''
2 && 's1' && NaN && 'sss' 표현식의 값은 NaN과 같습니다.
if(a >=5){
Alert("안녕하세요");
}
다음과 같이 단순화할 수 있습니다.
a >= 5 && Alert("안녕하세요");
typeof 5와 typeof !!5의 차이점은 좀 더 엄격한 작성 방식입니다. !!의 기능은 다른 유형의 변수를 bool 유형으로 변환하는 것입니다. 예를 들어 if(!!attr) => if(attr)
js의 || 및 && 기능은 코드를 간소화하는 데 도움이 될 뿐만 아니라 코드의 가독성도 떨어뜨립니다. 이를 위해서는 우리 스스로 무게를 달아야 합니다.
JS에서 startWith 함수의 영리한 구현, Alert(!'asdf'.indexOf('s')) => !0 = true