가오리의 코딩일기

코어 자바스크립트1: 논리 연산자 본문

HTML+CSS+JavaScript/DeepDive

코어 자바스크립트1: 논리 연산자

류경혜 2022. 8. 9. 15:00

논리 연산자

 

논리 연산자

 

ko.javascript.info

🪝 &&의 우선순위가 ||보다 높다

a && b || c && d
(a && b) || (c && d)

→ 위의 코드는 동일하게 동작한다

 

 

 

🪝 if를 ||나 &&로 대체하지 말자

let x = 1;
(x > 0) && alert('0보다 크다');

if (x > 0 ) alert('0보다 크다');

→ &&를 사용한 코드가 더 짧긴 하지만 if문을 사용한 예시가 코드에서 무엇을 구현하고자 하는지 더 명백히 드러나고 가독성도 좋다

→ if 조건문이 필요하면 if를 사용하고 AND 연산자는 연산자 목적에 맞게 사용하자

 

 

 

 

🧩 문제

Q1. 다음 OR 연산의 결과는 무엇일까요?

alert( null || 2 || undefined );

→ alert 창에 2가 출력된다.

 

 

 

 

Q2. OR 연산자의 피연산자가 alert라면?

alert( alert(1) || 2 || alert(3) );

→ alert 창에 1, 2가 출력된다.

 

 

 

 

Q3. 다음 AND 연산의 결과는 무엇일까요?

alert( 1 && null && 2 );

→ alert 창에 null이 출력된다.

 

 

 

 

Q4. AND 연산자의 피연산자가 alert라면?

alert( alert(1) && alert(2) );

→ alert 창에 1, undefined가 출력된다.

→ alert 호출 시 undefined가 반환되기 때문에

 

 

 

 

Q5. OR AND OR 연산자로 구성된 표현식

alert( null || 2 && 3 || 4 );

→ alert 창에 3이 출력된다.

→ &&의 우선순위가 ||의 우선순위보다 높다

→ null || 3 || 4: 3이 출력된다

 

 

 

 

Q6. 사이 범위 확인하기

age(나이)가 14세 이상 90세 이하에 속하는지를 확인하는 if문을 작성하세요.
“이상과 이하"는 age(나이)범위에 14나 90이 포함된다는 의미입니다
if (age >= 14 && age <= 90)

 

 

 

 

Q7. 바깥 범위 확인하기

age(나이)가 14세 이상 90세 이하에 속하지 않는지 확인하는 if문을 작성하세요.
답안은 NOT 연산자를 사용한 답안과 사용하지 않은 답안 2가지를 제출해주세요.
if (age < 14 || age > 90)
if (!(age >= 14 && age <= 90))

 

 

 

 

Q8. “if”에 관한 고찰

if (-1 || 0) alert( 'first' );         // -1 -> thruty
if (-1 && 0) alert( 'second' );        // 0 -> falsy
if (null || -1 && 1) alert( 'third' ); // 1 -> thruty
// null || -1 && 1 -> null || 1 -> 1

→ alert 창에 first, third가 출력된다.

 

 

 

 

Q9. 로그인 구현하기

프롬프트(prompt) 대화상자를 이용해 간이 로그인 창을 구현해보세요.
사용자가 “Admin”를 입력하면 비밀번호를 물어보는 프롬프트 대화상자를 띄워주세요. 이때 아무런 입력도 하지 않거나 ESC를 누르면 “취소되었습니다”라는 메시지를 보여주세요. 틀린 비밀번호를 입력했다면 “인증에 실패하였습니다"라는 메시지를 보여주세요.
비밀번호 확인 절차는 다음과 같습니다
→ 맞는 비밀번호 “TheMaster”를 입력했다면 “환영합니다!”라는 메시지를 보여주세요.
→ 틀린 비밀번호를 입력했다면 “인증에 실패하였습니다.”라는 메시지를 보여주세요
→ 빈 문자열을 입력하거나 입력을 취소했다면 “취소되었습니다"라는 메시지를 보여주세요
중첩 if 블록을 사용하고 코드 전체의 가독성을 고려해 답안을 작성하세요.
힌트: 프롬프트 창에 아무것도 입력하지 않으면 빈 문자열인 ‘’가, ESC를 누르면 null이 반환됩니다.
let userName = prompt("사용자 이름:", "");
if (userName == 'Admin'){
	let pw = prompt("비밀번호:", "");
	if (pw == 'TheMaster'){
		alert('환영합니다.');
	} else if (pw == '' || pw == null){
		alert('취소되었습니다.');
	} else {
		alert('인증에 실패하였습니다.');
} else if (userName == '' || userName == null) {
	alert('취소되었습니다.');
} else {
	alert ('인증에 실패하였습니다.');
}