
여러 개 중 하나라도 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>