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

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

by KASSID 2023. 2. 26.

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

 

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

 

λŒ“κΈ€