1. 다음 코드에서 콘솔 로그로 출력되는 값을 입력하세요.
let value = 0;
if (true && false) value += 1;
if (true || false) value += 2;
if (0 && "abc") value += 10;
if (123 && "") value += 20;
if (0 || "" || true) value += 40;
console.log(value); // 42
1. if (true && false) value += 1; // false
-> && 논리 AND 연산자.
2. if (true || false) value += 2; // true
-> || 논리 OR 연산자.
3. if (0 && "abc") value += 10; // false
-> 0 = falsy
4. if (123 && "") value += 20; // false
-> "" = falsy
5. if (0 || "" || true) value += 40; // true
-> || true
2. 다음 중에서 'abc'가 되는 변수를 모두 고르세요.
const c1 = 123;
const c2 = "abc";
const v1 = c1 && c2; // "abc"
const v2 = c1 && c2 && 0; // 0
const v3 = c1 && 0 && c2; // 0
const v4 = c1 || c2; // 123
const v5 = "" || c2; // "abc"
const v6 = !!(c1 && c2); // true
1. v1 = c1과 c2 모두 truthy이다. 모든 값이 참이라면 '마지막' 피연산자의 값이 반환되기 때문에 "abc"가 된다.
2. v2 = 0은 falsy이며, 이 경우 만나는 첫 번째 falsy한 값을 반환한다.
3. v3 = v2와 마찬가지. 논리 연산자가 반드시 true, false를 반환하는 것은 아니다.
4. v4 = c1이 true인 경우 c1을 저장하고, c1이 false인 경우 c2를 저장한다.
5. v5 = ""가 falsy이기 때문에 c2를 저장한다.
(만약 c2가 0인 경우 0을 저장, ""인 경우 ""를 저장한다)
6. v6 = (c1 && c2)는 마지막 피연산자 "abc"를 저장 -> !는 boolean으로 형 변환을 하고 NOT연산 시행.
3. 다음 코드에서 콘솔 로그로 출력되는 값을 입력하세요.
let value = 0;
const c1 = 123;
const c2 = 0;
c1 && (value += 1);
c2 && (value += 2);
!c2 && (value += 4);
c2 || (value += 10);
(c1 || c2) && (value += 20);
console.log(value);
1. c1은 truthy이기 때문에 뒤의 연산이 수행된다.
2. c2는 falsy이며 && 연산에서 앞의 연산이 false라면 뒤의 연산은 생략된다.
3. !c2은 truthy이며 뒤의 연산이 수행된다.
4. || 연산은 앞의 연산이 false인 경우 뒤의 연산이 수행된다.
5. (c1 || c2) = true
value = 35
☆ a || b = a가 truthy인 경우 a반환, a가 falsy인 경우 b 반환.
(앞의 값이 truthy인 경우 뒤의 피연산자를 평가하지 않고 앞의 피연산자 반환(truthy))
☆ a && b = a가 falsy인 경우 a반환, a가 truthy인 경우 b 반환.
(앞의 값이 falsey인 경우 뒤의 피연산자를 평가하지 않고 앞의 피연산자 반환(falsy))
4. 다음 중에서 변수의 값을 맞게 표현한 것을 모두 고르세요.
const value1 = 0;
const value2 = "";
const value3 = null;
const v1 = value1 || 100; // 100
const v2 = value1 ?? 100; // 0
const v3 = value2 || "abc"; // "abc"
const v4 = value2 ?? "abc"; // ""
const v5 = value3 ?? 200; // 200
?? = nullish 병합 연산자.
-> a ?? b로 연산했을때 a가 null도 아니고 undefined도 아니라면 a, 그 외의 경우 b
x = (a !== null && a !== undefined) ? a : b;
1. v1 = 앞의 값이 falsy이기 때문에 뒤에 있는 피연산자를 저장한다.
2, v2 = 0은 null이나 undefined가 아니기 때문에 0이 저장된다.
3. v3 = ""가 falsy이기 때문에 뒤에 있는 "abc"가 저장된다.
4. v4 = ""은 null이나 undefined가 아니기 때문에 ""이 저장된다.
5. v5 = value3는 null이기 때문에 200이 저장된다.
'Programming language > JavaScript' 카테고리의 다른 글
자바스크립트 퀴즈 - string 타입 (0) | 2023.03.22 |
---|---|
나머지 매개변수, Reduce함수, Referece 할당 (0) | 2023.03.20 |
자바스크립트 퀴즈 - number 타입 (0) | 2023.03.20 |
자바스크립트 퀴즈 - 8가지 기본 타입 (0) | 2023.03.19 |
자바스크립트 퀴즈 - let, const (0) | 2023.03.16 |