๋์จํ ํ์ (loosely typed)์ ๋์ (dynamic) ์ธ์ด
JavaScript๋ Java, C, TypeScript ๋ฑ ์๊ฒฉํ ํ์ ์ ์ธ์ ํด์ผํ๋ ์ธ์ด์๋ ๋ฌ๋ฆฌ ๋์จํ ํ์ ์ ์ง๋๋๋ค.
let foo = 42 // foo๊ฐ ์ซ์
foo = 'bar' // foo๊ฐ ์ด์ ๋ฌธ์์ด
foo = true // foo๊ฐ ์ด์ ๋ถ๋ฆฌ์ธ
์ด์ฒ๋ผ ๋ณ์์๋ ๋ฐ๋ก ํ์
์ง์ ์ ํด์ฃผ์ง ์์๋ ๋๋ฉฐ, ๊ฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์
์ด ์ง์ ๋ฉ๋๋ค.
์ฆ, JavaScript์ ๋ณ์๋ ์ด๋ค ํน์ ํ์
๊ณผ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉฐ, ๋ชจ๋ ํ์
์ ๊ฐ์ผ๋ก ํ ๋น(๋ฐ ์ฌํ ๋น) ๊ฐ๋ฅํฉ๋๋ค.
JavaScript ํ๋ณํ
์ด์ ์ ์ ๋ฆฌํ ๊ธ์ ์ฐธ์กฐํด์ฃผ์ธ์.
==, ===
์ด์ ์ ์ ๋ฆฌํ ๊ธ์ ์ฐธ์กฐํด์ฃผ์ธ์.
๋์จํ ํ์ (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์ ๊ฒฝ์ฐ์๋ ํด๋น ๋ณ์๊ฐ ์ด๋ค ๊ฐ์ฒด๋ ๊ฐ๋ฆฌํค๊ณ ์์ง ์๋ค๋ ๊ฒ์ ์๋์ ์ผ๋ก ๋ช
์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ถ๊ฐ ๋ฐ์ดํฐ ํ์ ์ ์ด์ ๊ธ์ ์ฐธ์กฐํด์ฃผ์ธ์.
Reference
'๐ฅ Front-End > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ์ค์ฝํ(Scope) (0) | 2022.07.21 |
---|---|
[JS] JavaScript ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ (0) | 2022.07.20 |
[JS] JavaScript์ append๋ฅผ ์ด์ฉํ HTML ์์ ์์ฑํ๊ธฐ (0) | 2022.05.15 |
[JS] 10. setTimeout & setInterval & requestAnimationFrame (0) | 2022.04.20 |
[JS] 8. IIFE & ๋ชจ๋ & ๋ค์์คํ์ด์ค (0) | 2022.04.18 |