๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŒ | WEB DEV/Vanilla JS

JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (14)_๋ถˆ๋ฆฌ์–ธ์— ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž๋“ค

by KASSID 2023. 2. 26.

๋ชฉ์ฐจ

    728x90

    ๋ถˆ๋ฆฌ์–ธ(boolean)์— ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์ž๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!

    let a = 1 === 2;	//false
    let b = 'abc' !== 'def'	//true
    let c = a !== b;	//true
    let d = typeof a === typeof b === true;	//true

    4๋ฒˆ์งธ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์—ฐ์† ๋น„๊ต ์‹œ์—๋Š” ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์ด ๋œ๋‹ค.

    (ํ•ด๋‹น ์˜ˆ์‹œ๋Š” ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„ ์ด๋ฏ€๋กœ ์•ž์˜ ์—ฐ์‚ฐ์ด ๋จผ์ €)

     

    1. ์—ฐ์‚ฐ์ž

    1) ๋ถ€์ • ์—ฐ์‚ฐ์ž

    ! ๋ฅผ ์ด์šฉํ•ด NOT ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    !true 	//false
    !!true	//true

    ์ด๋•Œ !!๋กœ ๋‘๊ฐœ๋ฅผ ๋ถ™์ผ ๊ฒฝ์šฐ !๊ฐ€ ์„œ๋กœ ์น˜ํ™˜๋˜๋Š”๋ฐ

     ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ๊ฐ’์„ boolean ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    console.log(!!'a')
    
    >>> true

     

    2) AND OR ์—ฐ์‚ฐ์ž

    && ๊ณผ || ์œผ๋กœ AND, OR ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    let x = 5;
    
    console.log(
      (x > 10 && x <= 20) || x % 3 === 0 //false || false
    );
    
    >>> false

     

     

    short circuit

    ๋น„๊ต ์—ฐ์‚ฐ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ ํ•˜์ง€ ์•Š๊ณ  ํ™•์ •์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ

    ์ค‘๊ฐ„์— ์—ฐ์‚ฐ์„ ํƒˆ์ถœํ•œ๋‹ค.

     

    && ์•ž์˜ ์—ฐ์‚ฐ์ด false์ผ ๊ฒฝ์šฐ ํ™•์ • false
    || ์•ž์˜ ์—ฐ์‚ฐ์ด true์ผ ๊ฒฝ์šฐ ํ™•์ • true

    ์ด๋ฅผ ์ด์šฉํ•ด ์—ฐ์‚ฐ ๋ถ€ํ•˜๊ฐ€ ์ ์€ ์ฝ”๋“œ๋ฅผ ์•ž์— ๋†“์•„์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค!

     

     ๋˜ํ•œ &&, || ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’ ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค! 

    let x = true;
    
    let y = x && 'abc'; //true์ด๋ฏ€๋กœ 'abc'๊นŒ์ง€ ํ™•์ธ ํ›„ ๋ฐ˜ํ™˜
    let z = x || 123;	//true์ด๋ฏ€๋กœ ํƒˆ์ถœ ๋ฐ ๋ฐ˜ํ™˜
    
    console.log(y, z);
    
    >>> abc true

     

    let x = false;
    
    let y = x && 'abc';	//false์ด๋ฏ€๋กœ ๋น ๋ฅด๊ฒŒ ํƒˆ์ถœ ํ›„ ๋ฐ˜ํ™˜
    let z = x || 123;	//false์ด๋ฏ€๋กœ ๋’ค๊นŒ์ง€ ํ™•์ธ ํ›„ ๋ฐ˜ํ™˜
    
    console.log(y, z);
    
    >>> false 123

     

    let x = 'abc' || true;
    
    console.log(x);
    
    >>> abc

     ์œ„์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ์„œ &&์€ Truthy๋ฅผ ๋Œ€์ฒดํ•˜๊ณ , ||๋Š” Falsy๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค! 

    3) ์‚ผํ•ญ์—ฐ์‚ฐ์ž

    (์กฐ๊ฑด) ? (์ฐธ์ผ ๊ฒฝ์šฐ) : (๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ)

     


    2. Truthy Falsy

    true ๋˜๋Š” false๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’๋“ค๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

     

    ์ด ์ค‘ false๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ ์•Œ์•„๋ณด์ž!

     0
     '' (๋นˆ ๋ฌธ์ž์—ด)
     null
     undefined
     NaN

    ํ•˜์ง€๋งŒ ์ด๋“ค ์ค‘ ํŒŒ๋ž€๊ธ€์”จ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ๋“ค์€ ์—ฐ์‚ฐ ์‹œ false๋กœ ํƒ€์ž…์ด ๋ณ€ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.

    //false์™€ ์ง์ ‘ ๋น„๊ต์‹œ
    console.log(
      null == false,
      undefined == false,
      NaN == false,
    );
    
    >>> false false false

    ํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์€ ์ง์ ‘ ์—ฐ์‚ฐ ์™ธ์—๋Š” false๋กœ ํ‰๊ฐ€๋˜๋ฏ€๋กœ ์—ฐ์‚ฐ์—๋Š” ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    let x = 0;
    let y = 1;
    
    x && x++; //0์€ false๋กœ ํ‰๊ฐ€๋˜๋ฏ€๋กœ ํƒˆ์ถœ
    y && y++; //1์€ true๋กœ ํ‰๊ฐ€๋˜๋ฏ€๋กœ ์ด์–ด์„œ ์—ฐ์‚ฐ
    
    console.log(x, y);
    
    >>> 0 2

     

    ๋Œ“๊ธ€