๋Š์Šจํ•œ ํƒ€์ž…(loosely typed)์˜ ๋™์ (dynamic) ์–ธ์–ด

JavaScript๋Š” Java, C, TypeScript ๋“ฑ ์—„๊ฒฉํžˆ ํƒ€์ž…์„ ์–ธ์„ ํ•ด์•ผํ•˜๋Š” ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ ๋Š์Šจํ•œ ํƒ€์ž…์„ ์ง€๋‹™๋‹ˆ๋‹ค.

let foo = 42 // foo๊ฐ€ ์ˆซ์ž
foo = 'bar' // foo๊ฐ€ ์ด์ œ ๋ฌธ์ž์—ด
foo = true // foo๊ฐ€ ์ด์ œ ๋ถˆ๋ฆฌ์–ธ

์ด์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์—๋„ ๋”ฐ๋กœ ํƒ€์ž… ์ง€์ •์„ ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ๊ฐ’์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํƒ€์ž…์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, JavaScript์˜ ๋ณ€์ˆ˜๋Š” ์–ด๋–ค ํŠน์ • ํƒ€์ž…๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ’์œผ๋กœ ํ• ๋‹น(๋ฐ ์žฌํ• ๋‹น) ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

JavaScript ํ˜•๋ณ€ํ™˜

์ด์ „์— ์ •๋ฆฌํ•œ ๊ธ€์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

 

[JS] 4. ์•”์‹œ์  ํ˜•๋ณ€ํ™˜, ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜, Nominal, ๊ตฌ์กฐํ™”, ๋• ํƒ€์ดํ•‘

์˜คํ”ˆ์†Œ์Šค ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ: https://github.com/yjs03057/33-js-concepts GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋… ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€..

eun-ng.tistory.com

==, ===

์ด์ „์— ์ •๋ฆฌํ•œ ๊ธ€์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

 

[JS] 5. == & === & typeof

์˜คํ”ˆ์†Œ์Šค ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ: https://github.com/yjs03057/33-js-concepts GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋… ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€..

eun-ng.tistory.com

๋Š์Šจํ•œ ํƒ€์ž…(loosely typed)์˜ ๋™์ (dynamic) ์–ธ์–ด์˜ ๋ฌธ์ œ์  ๋ฐ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

JavaScript์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ TypeScript๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
TypeScript๋Š” JavaScript์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ •์  ์–ธ์–ด์™€ ๊ฐ™์ด ํƒ€์ž…์„ ์„ ์–ธํ•˜์—ฌ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๊ณ ,
JavaScript์˜ ์˜ค๋ฅ˜๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์—๋งŒ ๋””๋ฒ„๊น…์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, TypeScript๋Š” ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๊ธฐ์— ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋””๋ฒ„๊น…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

undefined์™€ null์˜ ๋ฏธ์„ธํ•œ ์ฐจ์ด

undefined์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ์ƒํƒœ(๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š๊ฒŒ๋˜๋ฉด Javascript๋Š” ์ž๋™์œผ๋กœ undefined๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค),
null์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋นˆ ๊ฐ’์„ ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋Œ€๋กœ ํ• ๋‹นํ•œ ์ƒํƒœ(๋นˆ ๊ฐ์ฒด)์ž…๋‹ˆ๋‹ค.
์ฆ‰, undefined๋Š” ์ž๋ฃŒํ˜•์ด ์—†๋Š” ์ƒํƒœ์ด๋‹ค.
๋”ฐ๋ผ์„œ typeof๋ฅผ ํ†ตํ•ด ์ž๋ฃŒํ˜•์„ ํ™•์ธํ•ด๋ณด๋ฉด null์€ object๋กœ, undefined๋Š” undefined๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

typeof null // 'object'
typeof undefined // 'undefined'
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null // true
isNaN(1 + null) // false
isNaN(1 + undefined) // true

undefined

undefined๋Š” ์›์‹œ๊ฐ’(Primitive Type)์œผ๋กœ, ์„ ์–ธํ•œ ํ›„์— ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋‚˜ ๊ฐ’์ด ์ฃผ์–ด์ง€์ง€ ์•Š์€ ์ธ์ˆ˜์— ์ž๋™์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
์ด ๊ฐ’์€ ์ „์—ญ ๊ฐ์ฒด์˜ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋กœ, ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ์˜ ๋ณ€์ˆ˜์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ undefined ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ ๊ฐ’์€ undefined. ์ฆ‰, ์›์‹œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ๊ฒฝ์šฐ์— ๋ณ€์ˆ˜๊ฐ€ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜
  • ๋ฉ”์„œ๋“œ์™€ ์„ ์–ธ์—์„œ ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ํ•จ์ˆ˜๊ฐ€ ๊ฐ’์„ return ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ

null

null์€ ์›์‹œ๊ฐ’(Primitive Type) ์ค‘ ํ•˜๋‚˜๋กœ, ์–ด๋–ค ๊ฐ’์ด ์˜๋„์ ์œผ๋กœ ๋น„์–ด์žˆ์Œ์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
undefined๋Š” ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ, null์˜ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ค ๊ฐ์ฒด๋„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋„์ ์œผ๋กœ ๋ช…์‹œํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ด์ „ ๊ธ€์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.

 

[JS] ๋ชจ๋˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive - ๋ฐ์ดํ„ฐ ํƒ€์ž…

6์žฅ ๋ฐ์ดํ„ฐ ํƒ€์ž…(Data Type) ES6๋ถ€ํ„ฐ๋Š” 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค. 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์›์‹œ ํƒ€์ž…(Primitive Type)๊ณผ ๊ฐ์ฒด ํƒ€์ž…(Object/Reference Type)์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ˆซ์ž ํƒ€์ž…(Number Type) C์–ธ์–ด..

eun-ng.tistory.com

Reference

 

JavaScript์˜ ํƒ€์ž…๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ - JavaScript | MDN

๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” ๋‚ด์žฅ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ๋ณดํ†ต ๊ทธ ๋‚ด์šฉ์€ ์–ธ์–ด๋งˆ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” JavaScript์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๊ทธ ์†์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ

developer.mozilla.org

 

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!