논리 연산자, 비교 연산자 (95강)

keep_going·2023년 1월 5일
0

udemy_javascript

목록 보기
3/6

이걸 왜하나?

if문 보다 간단하게 조건을 비교하여 값을 할당/반환 할 수 있기 때문에.. 일종의 지름길!

  • Boolean Tricks
    js에서 원래 ''(empty string)은 falsy를 나타내지만
    뒷 내용을 부정하는 !를 두번 붙여주면 falsy가 아닌 진짜 false를 반환한다.
    즉 ''은 falsy, !!''은 false, 1은 truthy, !!1은 true

JavaScript에서 논리 연산자와 비교 연산자가 어떻게 작동하는지

  • or 연산자 -> a||b
    a가 false(또는 falsy)이면 b를 반환(b가 false라도)
    a가 truth(또는 truthy)이면 a를 반환(b는 확인 안함)

  • and 연산자 -> a&&b
    a가 false(또는 falsy)이면 a를 반환
    a가 truth(또는 truthy)이면 b를 반환(b가 false라도)

예제

  • const userName = 'Max';
    const altName = '';
    console.log(userName === 'Max'); // true
    console.log(userName); // 문자열 'Max'에서 변경되지 않음
    console.log(!!userName); // true를 출력. Max가 아니다. !과 !!은 항상 불리언 값을 반환/생성한다.

  • console.log(userName || null); // userName이 Truthy이므로 ||로 'Max'가 반환됨
    console.log(altName || 'Max'); // altName은 (빈 문자열이므로)Falsy이며 'Max'가 반환됨
    console.log(altName || ''); // altName과 ''는 모두 Falsy이지만 만일 첫 피연산자가 Falsy라면 항상 두 번째 피연산자가 반환되므로 ''이 반환됨

  • console.log(altName || null || 'Anna'); // altName과 null은 Falsy이므로 'Anna'가 반환됨

  • console.log(userName && 'Anna'); // userName은 Truthy이므로 두 번째 (!) 값인 'Anna'가 반환됨
    console.log(altName && 'Anna'); // altName은 Falsy이므로 첫 번째 값인 ''이 반환됨
    console.log(userName && ''); // userName은 Truthy이므로 두 번째 값인 ''이 반환됨
    항상 명심하세요. 그 어떤 연산자 (===, > 등이나 && 혹은 ||)도 비교에 쓰이는 변수를 변경하지 않습니다. 위의 예에서 userName 과 altName에 저장된 값은 절대 변경되지 않습니다.

===, >등은 단지 비교에 쓰이는 불값만 생성합니다. || 와 && 는 불리언을 생성하는 것이 아니라, 연산자 전후에 있는 값을 조건으로 취급합니다 (따라서 불값을 산출하고 필요한 경우 불리언으로 강제 변환됩니다).

위에서 설명한 작동 방식 때문에 JavaScript에서는 || 으로 변수/상수에 기본/대체 값을 할당합니다.

  • const enteredValue = ''; // 여기에 user가 직접 값을 작성한다고 가정할때 아직은 empty string
    const userName = enteredValue || 'PLACEHOLDER'; // enteredValue가 empty string일때 'PLACEHOLDER'를 할당한다.
profile
keep going

1개의 댓글

comment-user-thumbnail
2023년 1월 6일

다음은 다시 복습, 혹은 출력을 위한 참고자료로 JavaScript에서 논리 연산자와 비교 연산자가 어떻게 작동하는지에 대한 간단한 요약입니다.

const userName = 'Max';
const altName = '';
console.log(userName === 'Max'); // 불리언 값 참을 생성하고 출력
console.log(userName); // 문자열 'Max'에서 변경되지 않음

console.log(userName || null); // userName이 Truthy이므로 ||로 'Max'가 반환됨
console.log(altName || 'Max'); // altName은 (빈 문자열이므로)Falsy이며 'Max'가 반환됨
console.log(altName || ''); // altName과 ''는 모두 Falsy이지만 만일 첫 피연산자가 Falsy라면 항상 두 번째 피연산자가 반환되므로 ''이 반환됨

console.log(altName || null || 'Anna'); // altName과 null은 Falsy이므로 'Anna'가 반환됨

console.log(userName && 'Anna'); // userName은 Truthy이므로 두 번째 (!) 값인 'Anna'가 반환됨
console.log(altName && 'Anna'); // altName은 Falsy이므로 첫 번째 값인 ''이 반환됨
console.log(userName && ''); // userName은 Truthy이므로 두 번째 값인 ''이 반환됨
항상 명심하세요. 그 어떤 연산자 (===, > 등이나 && 혹은 ||)도 비교에 쓰이는 변수를 변경하지 않습니다. 위의 예에서 userName 과 altName에 저장된 값은 절대 변경되지 않습니다.

===, >등은 단지 비교에 쓰이는 불값만 생성합니다. || 와 && 는 불리언을 생성하는 것이 아니라, 연산자 전후에 있는 값을 조건으로 취급합니다 (따라서 불값을 산출하고 필요한 경우 불리언으로 강제 변환됩니다).

위에서 설명한 작동 방식 때문에 JavaScript에서는 || 으로 변수/상수에 기본/대체 값을 할당합니다.

const enteredValue = ''; // let's assume this is set based on some input provided by the user, therefore it might be an empty string

const userName = enteredValue || 'PLACEHOLDER'; // will assign 'PLACEHOLDER' if enteredValue is an empty string

답글 달기