여러 개 중 하나라도 true면 true
모든 값이 false일 때만 false
를 반환
모든 값이 true일 때만 true
즉, 하나라도 false면 false
를 반환
true와 false를 서로 반대 값으로 바꿔준다.
true면 false
로 false를 true
로 반환
<script>
//OR
//이름이 Eden이거나 성인이면 통과
const name = "Brie";
const age = 20;
if(name ==='Eden' || age > 19) {
console.log('통과');
}//"통과"
//AND
//이름이 Eden이고 성인이면 통과
const name = "Eden";
const age = 20;
if(name ==='Eden' && age > 19) {
console.log('통과');
}//"통과"
--------
const name = "Brie";
const age = 20;
if(name ==='Eden' && age > 19) {
console.log('통과')
} else {
console.log('탈락입니다')
}//"탈락입니다"
//NOT
//나이를 입력받아 성인이 아니면 탈락입니다..
const age = prompt('나이가 어떻게 되세요?')//10
const isAdult = age > 19;
if(!isAdult) {//성인이 아니면 //
console.log('탈락입니다')
}//"탈락입니다"
</script>
예를 들어보자! 먼저 Eden은 한국인이고 여자다.
Eden은 미국인이거나(OR) 여자이다.
true
다. 이것이 OR다.
하나의 조건만 만족해도 참이기 때문에 true값을 가진다.
Eden은 미국인이고(AND) 여자이다.
false
다. 미국인이 아니기 때문에 거짓 값을 가진다.
OR와 AND의 차이다.
또 다른 차이점,
OR는 첫번째 true
를 발견하는 즉시 평가를 멈춘다.
Eden은 여자고, 미국인이고, 학생이고 ...
첫번째 값 여자
부터 true이기 때문에 뒤에 오는 설명은 읽지않고 true를 반환한다.
반대로 AND는 첫번째 false
를 발견하는 즉시 평가를 멈춘다.
Eden은 남자고, 한국인이고, 군인이고 ...
첫번째 값 남자
부터 false 이기 때문에 그 뒤의 정보는 무시한다.
실제 코드에서도 어떤 순서로 평가를 배치하는지 중요하다.
간단한 평가로 true와 false를 먼저 판단할 수 있다면 복잡한 작업 전에 해주는 것이 좋다.
평가에서 많은 데이터를 걸러낼 수 있는 작업부터 해준다면 시간을 눈에 띄게 줄일 수 있다. 이런 작업들은 성능 최적화에 도움을 준다.
&&(AND)가 ||(OR)보다 우선순위가 높아 먼저 평가됩니다.
<script>
//여자고, 이름이 Eden이거나 성인이면 통과
const gender = 'F';
const name = 'Brie';
const isAdult = true;
if (gender ==='M' && name === 'Eden' || isAdult) {
console.log('통과')
} else {
console.log('탈락입니다')
}//"통과"
//???????????
//의도한대로 표현하려면
if (gender ==='M' && (name === 'Eden' || isAdult)) {
console.log('통과')
} else {
console.log('탈락입니다')
}//"탈락입니다"
if (gender ==='F' && (name === 'Eden' || isAdult)) {
console.log('통과')
} else {
console.log('탈락입니다')
}//"통과"
</script>