🀍 은지log 🀍

νƒ€μž… λ³€ν™˜ λ³Έλ¬Έ

πŸ’œ λͺ¨λ˜Javascript

νƒ€μž… λ³€ν™˜

Eun_zii 2022. 9. 28. 14:16

κ°œλ°œμžκ°€ μ˜λ„μ μœΌλ‘œ κ°’μ˜ νƒ€μž…μ„ λ³€ν™˜ ν•˜λŠ”κ²ƒμ„ λͺ…μ‹œμ  νƒ€μž… λ³€ν™˜ λ˜λŠ” νƒ€μž… μΊμŠ€νŒ… 이라 ν•œλ‹€.

let x = 10;

// λͺ…μ‹œμ  νƒ€μž…λ³€ν™˜
// 숫자λ₯Ό λ¬Έμžμ—΄λ‘œ νƒ€μž… μΊμŠ€νŒ… ν•œλ‹€.
let str = x.toString();
console.log(typeof x,x) // number 10



개발자의 μ˜λ„μ™€λŠ” μƒκ΄€μ—†μ΄ ν‘œν˜„식을 ν‰κ°€ν•˜λŠ” λ„쀑에 μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”진에 μ˜ν•΄ μ•”λ¬΅μ μœΌλ‘œ νƒ€μž…이 μžλ™λ³€ν™˜ λ˜λŠ”것을 
암묡적 νƒ€μž…λ³€ν™˜ λ˜λŠ” νƒ€μž… κ°•μ œ λ³€ν™˜ 이라 ν•œλ‹€.

let x = 10;

// 암묡적 νƒ€μž…λ³€ν™˜
// λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μžλŠ” 숫자 νƒ€μž… x의 값을 λ°”νƒ•μœΌλ‘œ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ μƒμ„±ν•œλ‹€.
let str = x + '';
console.log(typeof str,str); // string 10

//x λ³€μˆ˜μ˜ 값이 λ³€κ²½λœ 것은 μ•„λ‹ˆλ‹€.
console.log(typeof x,x); // number 10


πŸ“ λͺ…μ‹œμ  νƒ€μž… λ³€ν™˜μ΄λ‚˜ 암묡적 νƒ€μž… λ³€ν™˜μ΄ κΈ°μ‘΄ μ›μ‹œκ°’μ„ 직접 λ³€κ²½ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. 
μ›μ‹œκ°’μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’μ΄λ―€λ‘œ λ³€κ²½ν• μˆ˜ μ—†λ‹€. 
νƒ€μž… λ³€ν™˜μ΄λž€ κΈ°μ‘΄ μ›μ‹œκ°’을 μ‚¬μš©ν•΄ λ‹€λ₯Έ νƒ€μž…μ˜ μƒˆλ‘œμš΄ μ›μ‹œ κ°’을 μƒμ„±ν•˜λŠ” κ²ƒμ΄λ‹€.

πŸ“ 암묡적 νƒ€μž… λ³€ν™˜μ€ κΈ°μ‘΄ λ³€μˆ˜ 값을 μž¬ν• λ‹Ήν•˜μ—¬ λ³€κ²½ν•˜λŠ”κ²ƒμ΄ μ•„λ‹ˆλ‹€. 
μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”진은 ν‘œν˜„식을 μ—λŸ¬ μ—†μ΄ ν‰κ°€ν•˜κΈ° μœ„ν•΄ ν”Όμ—°μ‚°μžμ˜ κ°’을 μ•”묡적 νƒ€μž… λ³€ν™˜ν•΄ μƒˆλ‘œμš΄ νƒ€μž…μ˜ κ°’을 λ§Œλ“€μ–΄ λ‹¨ ν•œ λ²ˆ μ‚¬μš©ν•˜κ³  λ²„λ¦°λ‹€.

πŸ“ μžμ‹ μ΄ μž‘μ„±ν•œ μ½”λ“œμ—μ„œ 암묡적 νƒ€μž…λ³€ν™˜μ΄ λ°œμƒν•˜λŠ”μ§€, λ°œμƒν•œλ‹€λ©΄ μ–΄λ–€ νƒ€μž…μ˜ μ–΄λ–€κ°’μœΌλ‘œ λ³€ν™˜ λ˜λŠ”지, 
그리고 νƒ€μž… λ³€ν™˜λœ κ°’μœΌλ‘œ ν‘œν˜„μ‹μ΄ μ–΄λ–»κ²Œ 평가 될것인지 예츑 κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€.

λ§Œμ•½ νƒ€μž… λ³€ν™˜ κ²°κ³Όλ₯Ό μ˜ˆμΈ‘ν•˜μ§€ λͺ»ν•˜κ±°λ‚˜ 예츑이 결과와 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 였λ₯˜λ₯Ό 생산할 κ°€λŠ₯성이 높아진닀.

 

λͺ…μ‹œμ  νƒ€μž… λ³€ν™˜

개발자의 μ˜λ„μ— 따라 λͺ…μ‹œμ μœΌλ‘œ νƒ€μž…μ„ λ³€κ²½ν•˜λŠ” 방법은 λ‹€μ–‘ν•˜λ‹€.

λ¬Έμžμ—΄ νƒ€μž… λ³€ν™˜

λ¬Έμžμ—΄ νƒ€μž…μ΄ μ•„λ‹Œ 값을 λ¬Έμžμ—΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법

  1. String μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 ν˜ΈμΆœν•˜λŠ” 방법
  2. Object.prototype.toString λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 방법
  3. λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λŠ” 방법
// 1. String μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 ν˜ΈμΆœν•˜λŠ” 방법
// 숫자 νƒ€μž… -> λ¬Έμžμ—΄ νƒ€μž…
String(1); // "1"
String(NaN); // "NaN"
String(Infinity) // "Infinity"
// λΆˆλ¦¬μ–Έ νƒ€μž… -> λ¬Έμžμ—΄ νƒ€μž…
String(true); // "true"
String(false); // "false"
// 2. Object.prototype.toString λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 방법
// 숫자 νƒ€μž… -> λ¬Έμžμ—΄ νƒ€μž…
(1).toString(); // "1"
(NaN).toString(); // "NaN"
(Infinity).toString(); // "infinity"
// λΆˆλ¦¬μ–Έ νƒ€μž… -> λ¬Έμžμ—΄ νƒ€μž…
(true).toString(); // "true"
(false).toString(); // "false"
// 3. λ¬Έμžμ—΄ μ—°κ²° μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λŠ” 방법
// 숫자 νƒ€μž… -> λ¬Έμžμ—΄ νƒ€μž…
1 + ''; // "1"
NaN + ''; // "NaN"
Infinity + ''; // "infinity"
// λΆˆλ¦¬μ–Έ νƒ€μž… -> λ¬Έμžμ—΄ νƒ€μž…
true + ''; // "true"
false + ''; // "false"

 

숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜

숫자 νƒ€μž…μ΄ μ•„λ‹Œ 값을 숫자 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법

  1. Number μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 ν˜ΈμΆœν•˜λŠ” 방법
  2. parseInt, parseFloat ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 방법(λ¬Έμžμ—΄λ§Œ 숫자 νƒ€μž…μœΌλ‘œ κ°€λŠ₯)
  3. βž• 단항 μ‚°μˆ  μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λŠ” 방법
  4. βœ–οΈ μ‚°μˆ  μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λŠ” 방법
// 1. Number μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 ν˜ΈμΆœν•˜λŠ” 방법
// λ¬Έμžμ—΄ νƒ€μž… -> 숫자 νƒ€μž…
Number('0'); // 0
Number('-1'); // -1
Number('10.53'); // 10.53
// λΆˆλ¦¬μ–Έ νƒ€μž… -> 숫자 νƒ€μž…
Number(true); // 1
Number(false); // 0
// 2. parseInt, parseFloat ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 방법(λ¬Έμžμ—΄λ§Œ 숫자 νƒ€μž…μœΌλ‘œ κ°€λŠ₯)
// λ¬Έμžμ—΄ νƒ€μž… -> 숫자 νƒ€μž…
parseInt('0'); // 0
parseInt('-1'); // -1
parseFloat('10.53'); // 10.53
// 3. + 단항 μ‚°μˆ  μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λŠ” 방법
// λ¬Έμžμ—΄ νƒ€μž… -> 숫자 νƒ€μž…
+'0'; //0
+'-1'; // -1
+'10.53'; // 10.53
// λΆˆλ¦¬μ–Έ νƒ€μž… -> 숫자 νƒ€μž…
+true; // 1
+false; // 0
// 4. * μ‚°μˆ  μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜λŠ” 방법
// λ¬Έμžμ—΄ νƒ€μž… -> 숫자 νƒ€μž…
'0' * 1; // 0
'-1' * 1; // -1
'10.53' * 1; // 10.53
// λΆˆλ¦¬μ–Έ νƒ€μž… -> 숫자 νƒ€μž…
true * 1; // 1
false * 1; // 0

 

λΆˆλ¦¬μ–Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜

λΆˆλ¦¬μ–Έ νƒ€μž…μ΄ μ•„λ‹Œ 값을 λΆˆλ¦¬μ–Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법

  1. Boolean μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 ν˜ΈμΆœν•˜λŠ” 방법
  2. ! λΆ€μ • 논리 μ—°μ‚°μžλ₯Ό 두 번 μ‚¬μš©ν•˜λŠ” 방법
// 1. Boolean μƒμ„±μž ν•¨μˆ˜λ₯Ό new μ—°μ‚°μž 없이 ν˜ΈμΆœν•˜λŠ” 방법
// λ¬Έμžμ—΄ νƒ€μž… -> λΆˆλ¦¬μ–Έ νƒ€μž…
Boolean('x'); // true
Boolean(''); // false
Boolean('false') // true
// 숫자 νƒ€μž… -> λΆˆλ¦¬μ–Έ νƒ€μž…
Boolean(0); // false
Boolean(1); // true
Boolean(NaN); // false
Boolean(Infinity); // true
// null, undefined, 객체 νƒ€μž… -> λΆˆλ¦¬μ–Έ νƒ€μž…
Boolean(null); // false
Boolean(undefined); // false
Boolean({}); // true
Boolean([]); // true
// 2. ! λΆ€μ • 논리 μ—°μ‚°μžλ₯Ό 두 번 μ‚¬μš©ν•˜λŠ” 방법
// λ¬Έμžμ—΄ νƒ€μž… -> λΆˆλ¦¬μ–Έ νƒ€μž…
!! 'x'; // true
!!''; // false
!!'false'; // true
// μˆ«μžνƒ€μž… -> λΆˆλ¦¬μ–Έ νƒ€μž…
!!0; // false
!!1; // true
!!NaN; // false
!!Infinity; // true
// null, undefined, 객체 νƒ€μž… -> λΆˆλ¦¬μ–Έ νƒ€μž…
!!null; // false
!!undefined; // false
!!{}; // true
!![]; // true
 

암묡적 νƒ€μž…λ³€ν™˜

암묡적 νƒ€μž… λ³€ν™˜μ΄ λ°œμƒν•˜λ©΄ λ¬Έμžμ—΄, 숫자, λΆˆλ¦¬μ–Έκ³Ό 같은 μ›μ‹œ νƒ€μž… 쀑 ν•˜λ‚˜λ‘œ νƒ€μž…μ„ μžλ™ λ³€ν™˜ν•œλ‹€.

 

λ¬Έμžμ—΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜

1 + '2' = "12"
// 	ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄ ν‘œν˜„μ‹
`1 + 1 = ${1 + 1}` // "1 + 1 = 2"

 

μˆ«μžμ—΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜

1 - '1' // 0
1 * '10' // 10
1 / 'one' // NaN

'1' > 0 // true

 

λΆˆλ¦¬μ–Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜
μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 λΆˆλ¦¬μ–Έ νƒ€μž…μ΄ μ•„λ‹Œ 값을 Truthy(참으둜 평가 λ˜λŠ” κ°’) λ˜λŠ” Falsy(κ±°μ§“μœΌλ‘œ ν‰κ°€λ˜λŠ” κ°’)으둜 κ΅¬λΆ„ν•œλ‹€.
즉 μ œμ–΄λ¬Έμ˜ 쑰건식과 같이 λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ ν‰κ°€λ˜μ–΄μ•Ό ν•  λ¬Έλ§₯μ—μ„œ Truthy값은 true둜, Falsy값은 false둜 암묡적 νƒ€μž… λ³€ν™˜λœλ‹€.

 

false둜 ν‰κ°€λ˜λŠ” Falsyκ°’
=     false
=     undefined
=     null
=     0. -0
=     NaN
=     ''(빈 λ¬Έμžμ—΄)

728x90

'πŸ’œ λͺ¨λ˜Javascript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

객체 λ¦¬ν„°λŸ΄  (0) 2022.09.28
단좕평가  (0) 2022.09.28
반볡 λ¬Έ  (0) 2022.09.28
ν• λ‹Ήμ—°μ‚°μž  (0) 2022.09.28
ν‘œν˜„μ‹ μ‚½μž…  (0) 2022.09.28