관리 메뉴

Daehyunii's Dev-blog

07μž₯ μ—°μ‚°μž λ³Έλ¬Έ

07μž₯ μ—°μ‚°μž

  μ—°μ‚°μžλŠ” ν•˜λ‚˜ μ΄μƒμ˜ ν‘œν˜„μ‹μ„ λŒ€μƒμœΌλ‘œ μ‚°μˆ , ν• λ‹Ή, 비ꡐ, 논리, νƒ€μž…, μ§€μˆ˜ μ—°μ‚° 등을 μˆ˜ν–‰ν•΄ ν•˜λ‚˜μ˜ 값을 λ§Œλ“ λ‹€. ν”Όμ—°μ‚°μžλŠ” κ°’μœΌλ‘œ 평가 될 수 μžˆλŠ” ν‘œν˜„μ‹μ΄μ–΄μ•Ό ν•˜λ©°, ν”Όμ—°μ‚°μžμ™€ μ—°μ‚°μžμ˜ μ‘°ν•©μœΌλ‘œ 이뀄진 μ—°μ‚°μž ν‘œν˜„μ‹λ„ κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” ν‘œν˜„μ‹μ΄λ‹€. 

 

7.1 μ‚°μˆ  μ—°μ‚°μž

  μ‚°μˆ  μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžλ₯Ό λŒ€μƒμœΌλ‘œ μˆ˜ν•™μ  계산을 μˆ˜ν–‰ν•΄ μƒˆλ‘œμš΄ 숫자 값을 λ§Œλ“ λ‹€.(μ‚°μˆ μ΄ λΆˆκ°€λŠ₯ν•œ 경우 숫자 κ°’ NaN을 λ°˜ν™˜ν•œλ‹€.)

 

7.1.1 이항 μ‚°μˆ  μ—°μ‚°μž

  이항 μ‚°μˆ  μ—°μ‚°μžλŠ” 2개의 ν”Όμ—°μ‚°μžλ₯Ό μ‚°μˆ  μ—°μ‚°ν•˜μ—¬ 숫자 값을 λ§Œλ“ λ‹€. 이항 μ‚°μˆ  μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 값을 λ³€κ²½ν•˜λŠ” λΆ€μˆ˜ νš¨κ³ΌλŠ” μ—†λ‹€.

이항 μ‚°μˆ  μ—°μ‚°μž 의미 λΆ€μˆ˜ 효과
+ λ”ν•˜κΈ° μ—†μŒ
- λΉΌκΈ° μ—†μŒ
* κ³±ν•˜κΈ° μ—†μŒ
/ λ‚˜λˆ„κΈ° μ—†μŒ
% λ‚˜λ¨Έμ§€ λ‚˜λˆ„κΈ° μ—†μŒ

7.1.2 단항 μ‚°μˆ  μ—°μ‚°μž

  단항 μ‚°μˆ  μ—°μ‚°μžλŠ” 1개의 ν”Όμ—°μ‚°μžλ₯Ό μ‚°μˆ  μ—°μ‚°ν•˜μ—¬ 숫자 값을 λ§Œλ“ λ‹€.

단항 μ‚°μˆ  μ—°μ‚°μž 의미 λΆ€μˆ˜ 효과
++ 1μ”© 증가 있음
-- 1μ”© κ°μ†Œ 있음
+ μ–΄λ– ν•œ νš¨κ³Όλ„ μ—†λ‹€. μ—†μŒ
- μ–‘μˆ˜λ₯Ό 음수둜, 음수λ₯Ό μ–‘μˆ˜λ‘œ λ°˜μ „ν•œ κ°’ λ°˜ν™˜ μ—†μŒ

(증가/κ°μ†Œ μ—°μ‚°μž)

증가/κ°μ†Œ 연산을 ν•˜λ©΄ ν”Όμ—°μ‚°μžμ˜ 값을 λ³€κ²½ν•˜λŠ” 암묡적 할당이 μ΄λ€„μ§€λ―€λ‘œ, λΆ€μˆ˜ νš¨κ³Όκ°€ μžˆλ‹€. 증가/κ°μ†Œ μ—°μ‚°μžλŠ” μœ„μΉ˜μ— μ˜λ―Έκ°€ μžˆλ‹€.

-ν”Όμ—°μ‚°μž μ•žμ— μœ„μΉ˜ν•œ μ „μœ„ 증가/κ°μ†Œ μ—°μ‚°μžλŠ” λ¨Όμ € ν”Όμ—°μ‚°μžμ˜ 값을 증가/κ°μ†Œμ‹œν‚¨ ν›„, λ‹€λ₯Έ 연산을 μˆ˜ν–‰ν•œλ‹€.

-ν”Όμ—°μ‚°μž 뒀에 μœ„μΉ˜ν•œ ν›„μœ„ 증가/κ°μ†Œ μ—°μ‚°μžλŠ” λ¨Όμ € λ‹€λ₯Έ 연산을 μˆ˜ν–‰ν•œ ν›„, ν”Όμ—°μ‚°μžμ˜ 값을 쀑가/κ°μ†Œ μ‹œν‚¨λ‹€.

var x = 5;
var result;

result = x++; // result에 x의 κ°’ μ„ ν• λ‹Ή ν›„ x의 κ°’ 1 증가
result = ++x; // x의 κ°’ 1 선증가 ν›„ result에 κ°’ ν• λ‹Ή

(λ§μ…ˆ, λΊ„μ…ˆ μ—°μ‚°μž)

숫자 νƒ€μž…μ΄ μ•„λ‹Œ ν”Όμ—°μ‚°μžμ— +,- μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ ν”Όμ—°μ‚°μžλ₯Ό 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€.(암묡적 νƒ€μž… λ³€ν™˜)

var x = '1';
console.log(+x); // 숫자 κ°’ 1 λ°˜ν™˜
console.log(-x); // 숫자 κ°’ -1 λ°˜ν™˜
console.log(x); // λ¬Έμžμ—΄ '1' λ°˜ν™˜(λΆ€μˆ˜ νš¨κ³ΌλŠ” μ—†μŒ)

x = true;
console.log(+x); // 숫자 κ°’ 1 λ°˜ν™˜
console.log(-x); // 숫자 κ°’ -1 λ°˜ν™˜

x = false;
console.log(+x); // 숫자 κ°’ 0 λ°˜ν™˜
console.log(-x); // 숫자 κ°’ -0 λ°˜ν™˜

x = 'hello'
console.log(+x); // 숫자 κ°’ NaN λ°˜ν™˜(λ¬Έμžμ—΄μ„ 숫자둜 νƒ€μž… λ³€ν™˜ ν•  수 μ—†μœΌλ―€λ‘œ)

7.1.3 λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μž

  (+)μ—°μ‚¬μžλŠ” ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜ 이상이 λ¬Έμžμ—΄μΈ 경우 λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μžλ‘œ λ™μž‘ν•˜κ³  κ·Έ μ™Έμ˜ κ²½μš°λŠ” μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘ν•œλ‹€.

console.log('1' + 1); // λ¬Έμžμ—΄ νƒ€μž…μ˜ κ°’ 11 λ°˜ν™˜(λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μžλ‘œ λ™μž‘)

console.log(1 + 1); // 숫자 νƒ€μž…μ˜ κ°’ 2 λ°˜ν™˜(이항 μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘)

console.log(1 + 1); // 숫자 νƒ€μž…μ˜ κ°’ 2 λ°˜ν™˜(이항 μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘)

console.log(1 + true); // 숫자 νƒ€μž…μ˜ κ°’ 2 λ°˜ν™˜(이항 μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘)

console.log(1 + false); // 숫자 νƒ€μž…μ˜ κ°’ 1 λ°˜ν™˜(이항 μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘)

console.log(1 + undefined); // 숫자 νƒ€μž…μ˜ κ°’ NaN λ°˜ν™˜(이항 μ‚°μˆ  μ—°μ‚°μžλ‘œ λ™μž‘)

//+undefinedλŠ” 숫자둜 νƒ€μž… λ³€ν™˜μ΄ λ˜μ§€ μ•ŠμœΌλ―€λ‘œ, NaN 값을 λ°˜ν™˜ν•œλ‹€.

7.2 ν• λ‹Ή μ—°μ‚°μž

  ν• λ‹Ή μ—°μ‚°μžλŠ” μš°ν•­μ— μžˆλŠ” ν”Όμ—°μ‚¬μžμ˜ 평가 κ²°κ³Όλ₯Ό μ’Œν•­μ— μžˆλŠ” λ³€μˆ˜μ— ν• λ‹Ήν•œλ‹€. ν• λ‹Ή μ—°μ‚°μžλŠ” μ’Œν•­μ˜ λ³€μˆ˜μ— 값을 ν• λ‹Ήν•˜λ―€λ‘œ λ³€μˆ˜ 값이 λ³€ν•˜λŠ” λΆ€μˆ˜ νš¨κ³Όκ°€ μžˆλ‹€.

ν• λ‹Ή μ—°μ‚°μž 예 동일 ν‘œν˜„ λΆ€μˆ˜ 효과
= x = 5 x = 5 있음
+= x += 5 x = x + 5 있음
-= x -= 5 x = x - 5 있음
*= x *= 5 x = x * 5 있음
/= x /= 5 x = x / 5 있음
%= x %= 5 x = x % 5 있음
var num = 5;
num += 5; // 숫자 κ°’ 10 ν• λ‹Ή

var string = 'hello';
string += ' world'; // λ¬Έμžμ—΄ κ°’ hello world ν• λ‹Ή

7.3 비ꡐ μ—°μ‚°μž

  비ꡐ μ—°μ‚°μžλŠ” μ’Œν•­κ³Ό μš°ν•­μ˜ ν”Όμ—°μ‚°μžλ₯Ό λΉ„κ΅ν•œ λ‹€μŒ κ·Έ κ²°κ³Όλ₯Ό λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. λ”°λΌμ„œ μ œμ–΄λ¬Έμ˜ 쑰건식에 주둜 μ‚¬μš©ν•œλ‹€.

 

7.3.1 동등/일치 비ꡐ μ—°μ‚°μž

비ꡐ μ—°μ‚°μž 의미 예 μ„€λͺ… λΆ€μˆ˜ 효과
== 동등 비ꡐ x == y x,y의 값이 κ°™μŒ μ—†μŒ
=== 일치 비ꡐ x === y x,y의 κ°’,νƒ€μž…μ΄ κ°™μŒ μ—†μŒ
!= 뢀동등 비ꡐ x != y x,y의 값이 닀름 μ—†μŒ
!== 뢈일치 비ꡐ x !== y x,y의 κ°’,νƒ€μž…μ΄ 닀름 μ—†μŒ

동등 비ꡐ μ—°μ‚°μžλŠ” μ’Œν•­κ³Ό μš°ν•­μ˜ ν”Όμ—°μ‚°μžλ₯Ό 비ꡐ할 λ•Œ λ¨Όμ € 암묡적 νƒ€μž… λ³€ν™˜μ„ 톡해 νƒ€μž…μ„ μΌμΉ˜μ‹œν‚¨ ν›„ 같은 값인지 λΉ„κ΅ν•œλ‹€. λ”°λΌμ„œ 데이터 νƒ€μž…μ΄ λ‹€λ₯΄λ”라도 암묡적 νƒ€μž… λ³€ν™˜ 후에 같은 값일 수 μžˆλ‹€λ©΄ trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

console.log(5 == '5'); // true

동등 비ꡐ μ—°μ‚°μžλŠ” μ˜ˆμΈ‘ν•˜κΈ° μ–΄λ €μš΄ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄ 내기도 ν•˜λ―€λ‘œ, 일반적으둜 일치 비ꡐ μ—°μ‚°μžλ₯Ό 많이 μ‚¬μš©ν•œλ‹€.

 

β€»μ£Όμ˜μ‚¬ν•­

1. NaN : μžμ‹ κ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” μœ μΌν•œ 값이닀.

console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
//isNaN 빌트인 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 확인해야 ν•œλ‹€.
console.log(isNaN(NaN)); // true
console.log(isNaN(1+undefined)); // true

2. 0, -0 : μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” +0κ³Ό -0이 μžˆλŠ”λ° 이듀을 λΉ„κ΅ν•˜λ©΄ trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

console.log(0 === -0); // true
console.log(0 == -0); // true

3. Object.is λ©”μ„œλ“œ : Object.is λ©”μ„œλ“œλŠ” μ •ν™•ν•œ 비ꡐ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•œλ‹€.

console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(0, -0)); // false

7.3.2 λŒ€μ†Œ 관계 비ꡐ μ—°μ‚°μž

  λŒ€μ†Œ 관계 비ꡐ μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 크기λ₯Ό λΉ„κ΅ν•˜μ—¬ λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€.

λŒ€μ†Œ 관계 비ꡐ μ—°μ‚°μž 예제 의미 λΆ€μˆ˜ 효과
> x > y xκ°€ y보닀 크닀 μ—†μŒ
< x < y xκ°€ y보닀 μž‘λ‹€ μ—†μŒ
>= x >= y xκ°€ y보닀 ν¬κ±°λ‚˜ κ°™λ‹€ μ—†μŒ
<= x <= y xκ°€ y보닀 μž‘κ±°λ‚˜ κ°™λ‹€ μ—†μŒ

 

7.4 μ‚Όν•­ 쑰건 μ—°μ‚°μž

  μ‚Όν•­ 쑰건 μ—°μ‚°μžλŠ” μ‘°κ±΄μ‹μ˜ 평가 결과에 따라 λ°˜ν™˜ν•  값을 κ²°μ •ν•œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μœ μΌν•œ μ‚Όν•­ μ—°μ‚°μžμ΄λ©°, λΆ€μˆ˜ νš¨κ³ΌλŠ” μ—†λ‹€. μ‚Όν•­ 쑰건 μ—°μ‚°μžλŠ” μ²« 번째 ν”Όμ—°μ‚°μžκ°€ true둜 ν‰κ°€λ˜λ©΄ 두 번째 ν”Όμ—°μ‚°μžλ₯Ό λ°˜ν™˜ν•˜κ³ , μ²« 번째 ν”Όμ—°μ‚°μžκ°€ false둜 ν‰κ°€λ˜λ©΄ μ„Έ 번째 ν”Όμ—°μ‚°μžλ₯Ό λ°˜ν™˜ν•œλ‹€. κ²°κ΅­ μ‚Όν•œ 쑰건 μ—°μ‚°μžλŠ” 두 번째 ν”Όμ—°μ‚°μž λ˜λŠ” μ„Έ 번째 ν”Όμ—°μ‚°μžλ‘œ ν‰κ°€λ˜λŠ” ν‘œν˜„식이닀. λ§Œμ•½ 첫 번째 ν”Όμ—°μ‚°μžμΈ μ‘°κ±΄μ‹μ˜ 평가 κ²°κ³Όκ°€ λΆˆλ¦¬μ–Έ 값이 μ•„λ‹ˆλ©΄ μ•”묡적 νƒ€μž… λ³€ν™˜λœλ‹€.

var x = 2;

var result = x % 2 ? 'ν™€μˆ˜' : '짝수';

console.log(x); // 짝수 
// μœ„ 쑰건식 x % 2λŠ” 숫자 κ°’ 0 λ˜λŠ” 1둜 평가 λ˜λŠ”λ°, λΆˆλ¦¬μ–Έ 값이 μ•„λ‹ˆλ―€λ‘œ
// 암묡적 νƒ€μž… λ³€ν™˜μ΄ μΌμ–΄λ‚˜ 숫자 κ°’ 0 이 false둜 λ³€ν™˜λ˜μ–΄ μ„Έ 번째 ν”Όμ—°μ‚°μžκ°€ ν‰κ°€λ˜μ–΄ λ°˜ν™˜λœ 것이닀.

μ‚Όν•­ 쑰건 μ—°μ‚°μžμ˜ 첫 번째 ν”Όμ—°μ‚°μžλŠ” μ‘°κ±΄μ‹μ΄λ―€λ‘œ μ‚Όν•­ 쑰건 μ—°μ‚°μž ν‘œν˜„μ‹μ€ μ‘°κ±΄λ¬Έμ΄λ‹€. λ”°λΌμ„œ if,else문을 μ‚¬μš©ν•΄λ„ μ‚Όν•­ 쑰건 μ—°μ‚°μž ν‘œν˜„μ‹κ³Ό μœ μ‚¬ν•˜κ²Œ 처리λ₯Ό ν•  수 μžˆλ‹€. λ‹€λ§Œ 두 문의 차이점은 μ‚Όν•­ 쑰건 μ—°μ‚°μžλŠ” ν‘œν˜„μ‹μ΄λ―€λ‘œ κ°’μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, if,else문은 ν‘œν˜„μ‹μ΄ μ•„λ‹ˆλ―€λ‘œ κ°’μ²˜λŸΌ μ‚¬μš© ν•  수 μ—†λ‹€. λ”°λΌμ„œ μ–΄λ–€ 값을 λ‹¨μˆœν•˜κ²Œ κ²°μ •ν•΄μ•Ό ν•œλ‹€λ©΄ if,else문을 ν™œμš©ν•˜λŠ” κ²ƒλ³΄λ‹€λŠ” 삼항쑰건 μ—°μ‚°μž ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜λŠ” 편이 μœ λ¦¬ν•˜λ‹€.

 

7.5 논리 μ—°μ‚°μž

  논리 μ—°μ‚°μžλŠ” μš°ν•­κ³Ό μ’Œν•­μ˜ ν”Όμ—°μ‚°μžλ₯Ό 논리 μ—°μ‚°ν•œλ‹€. (λΆ€μ • 논리 μ—°μ‚°μžμ˜ 경우 μš°ν•­μ˜ ν”Όμ—°μ‚¬μžλ₯Ό 논리 μ—°μ‚° ν•œλ‹€.)

논리 μ—°μ‚°μž 의미 λΆ€μˆ˜ 효과
&& 논리곱(AND) μ—†μŒ
|| 논리합(OR) μ—†μŒ
! λΆ€μ •(NOT) μ—†μŒ

μ£Όμ˜ν•  점은, λ…Όλ¦¬ λΆ€μ • μ—°μ‚°μž( ! ) λŠ” μ–Έμ œλ‚˜ λΆˆλ¦¬μ–Έ 값을 λ°˜ν™˜ν•œλ‹€. κ·ΈλŸ¬λ‚˜ ν”Όμ—°μ‚°μžκ°€ λ°˜λ“œμ‹œ λΆˆλ¦¬μ–Έ 값일 ν•„μš”λŠ” μ—†λ‹€. λ§Œμ•½ ν”Όμ—°μ‚°μžκ°€ λΆˆλ¦¬μ–Έ 값이 μ•„λ‹ˆλΌλ©΄ λΆˆλ¦¬μ–Έ νƒ€μž…μœΌλ‘œ μ•”묡적 νƒ€μž… λ³€ν™˜λœλ‹€.

//논리리 κ³± μ—°μ‚°μž
console.log(true && true); // true
console.log(true && false); // false

//논리 ν•© μ—°μ‚°μž
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true

//논리 λΆ€μ • μ—°μ‚°μž
console.log(!0); // true(숫자 κ°’ 0이 암묡적 νƒ€μž… λ³€ν™˜λ˜μ–΄ falseκ°’μœΌλ‘œ λ³€ν™˜λ˜κ³  !이 λΆ™μ–΄ trueλ₯Ό λ°˜ν™˜)

논리합 λ˜λŠ” 논리곱 μ—°μ‚°μž ν‘œν˜„μ‹μ˜ 평가 κ²°κ³ΌλŠ” λΆˆλ¦¬μ–Έ 값이 아닐 μˆ˜λ„ μžˆλ‹€. 논리합 λ˜λŠ” 논리곱 μ—°μ‚°μž ν‘œν˜„μ‹μ€ μ–Έμ œλ‚˜ 2개의 ν”Όμ—°μ‚°μž 쀑 μ–΄λŠ ν•œμͺ½μœΌλ‘œ ν‰κ°€λœλ‹€.(단좕 평가, μžμ„Έν•œ λ‚΄μš©μ€ ν›„μˆ )

 

7.6 μ‰Όν‘œ μ—°μ‚°μž

  μ‰Όν‘œ( , ) μ—°μ‚°μžλŠ” μ™Όμͺ½ ν”Όμ—°μ‚°μžλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ ν”Όμ—°μ‚°μžλ₯Ό ν‰κ°€ν•˜κ³  λ§ˆμ§€λ§‰ ν”Όμ—°μ‚°μžμ˜ 평가가 λλ‚˜λ©΄ λ§ˆμ§€λ§‰ ν”Όμ—°μ‚°μžμ˜ 평가 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

7.7 κ·Έλ£Ή μ—°μ‚°μž

  μ†Œκ΄„ν˜Έ( '( )' )둜 ν”Όμ—°μ‚°μžλ₯Ό κ°μ‹ΈλŠ” κ·Έλ£Ή μ—°μ‚°μžλŠ” μžμ‹ μ˜ ν”Όμ—°μ‚°μžμΈ ν‘œν˜„μ‹μ„ κ°€μž₯ λ¨Όμ € ν‰κ°€ν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ κ·Έλ£Ή μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ—°μ‚°μžμ˜ μš°μ„ μˆœμœ„λ₯Ό μ‘°μ ˆν•  수 μžˆλ‹€. κ·Έλ£Ή μ—°μ‚°μžλŠ” μš°μ„ μˆœμœ„κ°€ κ°€μž₯ λ†’λ‹€. (이 뢀뢄은 μˆ˜ν•™μ  사고λ₯Ό ν•˜μ—¬λ„ 무방할 것 κ°™λ‹€.)

console.log((1 + 2) * 3); // 9

7.8 typeof μ—°μ‚°μž

  typeof μ—°μ‚°μžλŠ” ν”Όμ—°μ‚°μžμ˜ 데이터 νƒ€μž…μ„ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. typeof μ—°μ‚°μžλŠ” 총 7가지 λ¬Έμžμ—΄, 'string', 'number', 'undefined', 'symbol', 'boolean', 'object', 'function' 쀑 ν•˜λ‚˜λ₯Ό λ°˜ν™˜ν•œλ‹€.

 

β€»μ£Όμ˜μ‚¬ν•­

-null 값은 object λ¬Έμžμ—΄μ„ λ°˜ν™˜λœλ‹€.(μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 첫 번째 버그닀. λ”°λΌμ„œ null값은 일치 비ꡐ μ—°μ‚°μž( === ) λ₯Ό 톡해 확인해야 ν•œλ‹€.)

-ν•¨μˆ˜ 값은 function λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

-μ„ μ–Έν•˜μ§€ μ•Šμ€ μ‹λ³„μžλ₯Ό typeof μ—°μ‚°μžλ‘œ μ—°μ‚°ν•˜λ©΄ ReferenceErrorκ°€ λ°œμƒν•˜μ§€ μ•Šκ³  undefined λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

console.log(typeof ''); //string
console.log(typeof 0); //number
console.log(typeof NaN); //number
console.log(typeof undefined); //undefined
console.log(typeof true); // boolean
console.log(typeof Symbol()); //symbol
console.log(typeof null); // object
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof function(){}); // function
console.log(typeof helloWorld); // undefined (μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ‹λ³„μžκ°€ 평가 λ˜μ—ˆμ„λ•Œ λ°˜ν™˜λ˜λŠ” λ¬Έμžμ—΄)

/*μ£Όμ˜μ‚¬ν•­ : typeof μ—°μ‚°μžλ₯Ό 톡해 μ—°μ‚°ν•œ κ²°κ³Ό 값은 'λ¬Έμžμ—΄' 이닀.*/

7.9 μ§€μˆ˜ μ—°μ‚°μž

  ES7μ—μ„œ λ„μž…λœ μ§€μˆ˜ μ—°μ‚°μžλŠ” μ’Œν•­μ˜ ν”Όμ—°μ‚°μžλ₯Ό λ°‘μœΌλ‘œ, μš°ν•­μ˜ ν”Όμ—°μ‚°μžλ₯Ό μ§€μˆ˜λ‘œ κ±°λ“­ μ œκ³±ν•˜μ—¬ 숫자 값을 λ°˜ν™˜ν•œλ‹€.

console.log(2 ** 2); // 4(2의 2승)

μ§€μˆ˜ μ—°μ‚°μžκ°€ λ„μž…λ˜κΈ° μ΄μ „μ—λŠ” Math.powλ©”μ„œλ“œλ₯Ό μ‚¬μš©ν–ˆλ‹€.

console.log(Math.pow(2, 2); // 4 (2의 2승)

β€»μ£Όμ˜μ‚¬ν•­

-음수λ₯Ό κ±°λ“­μ œκ³±μ˜ λ°‘μœΌλ‘œ μ‚¬μš©ν•΄ κ³„μ‚°ν•˜λ €λ©΄ μ†Œκ΄„ν˜Έλ‘œ λ¬Άμ–΄μ•Ό ν•œλ‹€. (묢지 μ•ŠμœΌλ©΄ SyntaxError λ°œμƒ)

console.log((-5) ** 2); // 25 (-5의 2승)

μ§€μˆ˜ μ—°μ‚°μžλ„ λ‹€λ₯Έ μ‚°μˆ  μ—°μ‚°μžμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ ν• λ‹Ή μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλ‹€.

var x = 2;
x **= 3;
console.log(x); // 8 (2의 3승)

7.11 μ—°μ‚°μžμ˜ λΆ€μˆ˜ 효과

  λŒ€λΆ€λΆ„μ˜ μ—°μ‚°μžλŠ” λ‹€λ₯Έ μ½”λ“œμ— 영ν–₯을 주지 μ•Šμ§€λ§Œ, ν• λ‹Ή μ—°μ‚°μž, μ¦κ°€/κ°μ†Œ μ—°μ‚°μž, delete μ—°μ‚°μž(ν”„λ‘œνΌν‹° μ‚­μ œ)λŠ” λ‹€λ₯Έ μ½”λ“œμ— 영ν–₯을 μ£ΌλŠ” λΆ€μˆ˜ νš¨κ³Όκ°€ μžˆλ‹€.