λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🌌 | WEB DEV/Vanilla JS

JS_κΈ°λ³Έ 문법 (13)_μˆ«μžμ— μ‚¬μš©λ˜λŠ” μ—°μ‚°μžλ“€

by KASSID 2023. 2. 26.

λͺ©μ°¨

    728x90

    μˆ«μžμ™€ κ΄€λ ¨λœ μ—°μ‚°μžλ“€μ„ μ•Œμ•„λ³΄μž!

     

    1. 숫자 μžλ£Œν˜• number

    1) μ–‘κ³Ό 음

    JSμ—μ„œλŠ” μ •μˆ˜μ™€ μ‹€μˆ˜ λͺ¨λ‘ number μžλ£Œν˜•μ΄λ‹€.

    즉, μ •μˆ˜λ„ λ‚΄λΆ€μ—μ„œ μ‹€μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ²˜λ¦¬λœλ‹€.

     

    + 와 -둜 μ–‘κ³Ό μŒμ„ λ‚˜νƒ€λ‚Έλ‹€!

     

    2) λ¬΄ν•œλŒ€

    Infinity λŠ” λ¬΄ν•œλŒ€λ₯Ό ν‘œν˜„ν•˜λŠ” μžλ£Œν˜•μœΌλ‘œ number의 범주에 μ†ν•œλ‹€.

    이 λ˜ν•œ μ–‘κ³Ό 음이 μ‘΄μž¬ν•œλ‹€.

     

    3) NaN

    Not a Number의 μ•½μžλ‘œ μˆ«μžκ°€ μ•„λ‹Œ 것을 μ˜λ―Έν•œλ‹€.

    NaN μ—­μ‹œ number의 범주에 μ†ν•œλ‹€.

    let x = 1 / 'a';
    let y = 2 * 'a';
    let z = NaN;
    
    console.log(x, typeof x);
    console.log(y, typeof y);
    console.log(z, typeof z);
    
    >>> NaN 'number'
    >>> NaN 'number'
    >>> NaN 'number'

    ν•˜μ§€λ§Œ NaN은 μ–‘κ³Ό 음의 ꡬ뢄이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

     

    NaN 확인방법

    NaN ν™•μΈλ°©λ²•μ—λŠ” 두 가지가 μžˆλ‹€.

    isNaN() μˆ«μžκ°€ μ•„λ‹ˆλ©΄ 무쑰건 true λ°˜ν™˜
    Number.isNaN() 숫자 μžλ£Œν˜•μ΄μ§€λ§Œ μˆ«μžκ°€ 아닐 경우 true λ°˜ν™˜

     

    let x = NaN;
    
    console.log(
      x,
      x == NaN,
      x === NaN,
      isNaN(x), // μˆ«μžκ°€ 아닐 μ‹œ true
      Number.isNaN(x) // 보닀 μ—„κ²©ν•œ 버전
    );

     

    β‘  숫자둜 λ³€ν™˜μ΄ κ°€λŠ₯ν•œ 문자

    console.log(
      typeof '1', isNaN('1'), Number.isNaN('1')
    ); // νŠΉμ • 숫자둜 λ³€ν™˜ κ°€λŠ₯ν•œ 문자
    
    >>> string false false

    숫자둜 λ³€ν™˜μ΄ κ°€λŠ₯ν•œ 경우 NaN으둜 μΈμ‹ν•˜μ§€ μ•ŠλŠ”λ‹€.

     

    β‘‘ true, false

    console.log(
      typeof true, isNaN(true), Number.isNaN(true)
    ); // trueλŠ” 1, falseλŠ” 0으둜 λ³€ν™˜λ¨
    
    >>> boolean false false

    ture falseλŠ” 1κ³Ό 0으둜 λ³€ν™˜λ˜λ―€λ‘œ NaN으둜 μΈμ‹ν•˜μ§€ μ•ŠλŠ”λ‹€.

     

    console.log(
      typeof ('a'), isNaN('a'), Number.isNaN('a')
    ); // 숫자둜 λ³€ν™˜μ΄ λΆˆκ°€ν•œ 경우
    
    >>> string true false

    νŠΉμ • 문자둜 λ³€ν™˜μ΄ λΆˆκ°€λŠ₯ν•˜κ³  numberκ°€ 아닐 경우

    isNaN()은 trueλ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, Number.isNaN()은 falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

     


    2. μ—°μ‚°μž

    1) μ‚°μˆ  μ—°μ‚°μž 

     

    β‘  이항 μ—°μ‚°μž

    + - * / % ** λ₯Ό μ§€μ›ν•œλ‹€.

    κ΄„ν˜Έμ˜ μ‚¬μš©λ„ κ°€λŠ₯ν•˜λ‹€!

     

    β‘‘ 단항 μ—°μ‚°μž

    ++, -- 지원!

     

    숫자둜의 λ³€ν™˜

    단항 μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ 숫자둜 μžλ™ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€.

    console.log(
      +'1',
      -'1',
      +'a' // 숫자둜 λ³€ν™˜λ  수 μ—†λŠ” λ¬Έμžμ—΄
    );
    
    >>> 1 -1 NaN

    숫자 λ³€ν™˜μ΄ λΆˆκ°€λŠ₯ν•  κ²½μš°μ—λŠ” NaN을 λ°˜ν™˜ν•œλ‹€.

     

    let x = '100';
    let y = '100';
    console.log(x++, x);
    console.log(++y, y);
    
    >>> 100 101
    >>> 101 101

     

    let z = 'a';
    console.log(++z, z);
    
    >>> NaN NaN

     

    2) ν• λ‹Ή μ‚°μˆ  μ—°μ‚°μž

    μœ„μ˜ 이항 μ—°μ‚°μžμ— '='을 λΆ™μ—¬μ„œ ν• λ‹Ή 연산을 ν•  수 μžˆλ‹€.

    let x = 1;
    x += 6	//7
    x -= 3	//4
    x *= 2	//8
    x /= 4	//2
    x %= 3	//2
    x **= 2	//4

    λ˜ν•œ ν• λ‹Ή μ‚°μˆ  연산은 ν• λ‹Ή κ²°κ³Όλ₯Ό λ°˜ν™˜ν•œλ‹€.

    let y = 4;
    console.log(y **= 0.5, y);
    
    >>> 2 2

     

    λŒ“κΈ€