๐Ÿค JavaScript์˜ ์ž๋ฃŒํ˜•๊ณผ JavaScript๋งŒ์˜ ํŠน์„ฑ์€ ๋ฌด์—‡์ผ๊นŒ ?

๊น€์žฌ์šฐยท2022๋…„ 9์›” 23์ผ
0

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Basic

๋ชฉ๋ก ๋ณด๊ธฐ
1/3
post-thumbnail

Basic javascript 1-1

Javascript์˜ Loose Typing ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋จผ์ € Loose typing์ด ๋ฌด์—‡์ธ์ง€, ๋Š์Šจํ•œ ํƒ€์ดํ•‘์ด ์•„๋‹Œ๊ฑด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”ํ•œ๋ฐ!
loose typing์€ ํƒ€์ž…์—†์ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ ,
๋ฐ˜๋ฉด์— strong typing์„ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋Š” ํƒ€์ž…๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์•ผ๋งŒ ํ•œ๋‹ค.
์‰ฝ๊ฒŒ ์š”์•ฝํ•˜๋ฉด ๋ณ€์ˆ˜์— ํƒ€์ž…์„ ํ•„์ˆ˜์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„ '๋Š์Šจํ•œ ํƒ€์ž…'์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ณ 
๋ณ€์ˆ˜์— ์ €์žฅ ๋˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ์–ธ์ œ๋“ ์ง€ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์  ํƒ€์ž… ์–ธ์–ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/ JavaScript Example (loose typing) /
var a = 13; // Number ์„ ์–ธ
var b = "thirteen"; // String ์„ ์–ธ

javascript ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด a,b ๋‘˜๋‹ค var type ์œ ํ˜•์œผ๋กœ ์„ ์–ธ ๋˜๊ณ  ์žˆ๋‹ค.
๊ทธ๋ ‡์ง€๋งŒ ์ด๊ฒƒ์ด ์œ ํ˜•์ด ์—†๊ฑฐ๋‚˜ "var"์œ ํ˜•์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š”๋ฐ;;
var ๊ฐ’์€ const์™€ ๋ฐ˜๋Œ€๋กœ ์–ธ์ œ๋“ ์ง€ ๋ณ€ํ˜•์ด ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜๋ผ์„œ ๋Š์Šจํ•œ ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๋Š”๊ฑด๊ฐ€?
๊ทธ๋ž˜์„œ ๋ฐ˜๋Œ€ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ ธ์™€๋ดค๋‹ค.

/ java example (strong typing) /
int a = 13; // int declaration
string b = "thirteen"; // string declaration

Java ์˜ˆ์‹œ์—์„œ๋Š” loose typing ๋ฐฉ์‹๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ strong typing ์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ.
์•„์˜ˆ int(=number) ๊ฐ’๊ณผ string ๊ฐ’์„ ์ฃผ๊ณ  ์žˆ๋‹ค.
์•„ํ•˜! type์—๋Š” Number,String,Boolean(true,false),null,undefined ์ด๋ ‡๊ฒŒ 5๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ type ์—†์ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š”๊ฒŒ ์ด๊ฑฐ๊ตฌ๋‚˜ !!
์ดํ•ด๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ๋‹ค!

์ž ๊น?
์ด๋Ÿฌํ•œ ํŠน์ง•์ด ๊ฒฐ๊ตญ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์•ฝ์ ์ด ๋œ๋‹ค๋Š”๋ฐ?
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋Š” ์ปดํŒŒ์ผ ๋œ ํ›„ ์‹คํ–‰๋˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹คํ–‰ ๋˜๋Š” ์ˆœ๊ฐ„ ํ•œ์ค„์”ฉ ์ฝ์œผ๋ฉฐ (์ธํ„ฐํ”„๋ฆฌํ„ฐ) ์‹คํ–‰์ด ๋œ๋‹ค๋Š”๋ฐ ์ด๊ฑด ์ฆ‰ , ์ปดํŒŒ์ผ ๋˜๋Š” ๊ณผ์ •์ด ๋”ฐ๋กœ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž… ์˜ค๋ฅ˜๋ฅผ ์‹คํ–‰ ์ „์— ์ฒดํฌ ํ• ์ˆ˜๊ฐ€ ์—†๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์žฌ๋ฐŒ๋Š” ์˜ˆ์‹œ๋ฅผ ๋“ค๊ณ  ์™”๋‹ค.

๐Ÿค“๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž: ์ด๋ฒˆ์— ์‚ฌ์šฉํ•  API ๋ช…์„ธ์™€ ํ•จ๊ป˜ ์ „๋‹ฌ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค~ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ ค์š”!
params ์˜ˆ์‹œ
{
id: number,
name: string,
display: string,
price: string
}

๐Ÿ™‚๋‚˜: ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ํ•œ๋ฒˆ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ๊ฒŒ์š”!
data: {
id: 1,
name: '์ค€',
display: 'ํ•˜ํ•˜ํ•˜',
price: 25000 // ?!
}
๐Ÿ™‚(๋ฉ์ฒญํ•œ)๋‚˜: ์•„๋‹ˆ, ์ด๊ฑฐ API๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์€๋ฐ์š”? ๋กœ๊ทธ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ ค์š” ใ…  ใ… 
๐Ÿค“๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž: ์•„๋‹ˆ, ๋ช…์„ธ ์ œ๋Œ€๋กœ ์•ˆ ์ฝ์–ด ๋ณด์…จ์–ด์š”?! ๐Ÿ˜ก

๊ทธ๋ ‡๋‹ค๋ฉด ์•ฝ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด์•ผํ•˜๋Š” ์ผ์€ ๋ฌด์—‡์ผ๊นŒ?

1.์˜ˆ์ƒ๋˜๋Š” ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์— type ์ถ”๊ฐ€ ๋œ ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ์˜ ์‚ฌ์šฉ

๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ?๐Ÿ˜’๐Ÿ˜’
์ด๊ฑด ๋˜ ๋ญ์ง€?๐Ÿคฆโ€โ™‚๏ธ๐Ÿคฆโ€โ™‚๏ธ๐Ÿคฆโ€โ™‚๏ธ ๋จธ๋ฆฌ๊ฐ€ ์•„ํ”„๊ธฐ ์‹œ์ž‘..
์„ค๋ช…์ด ํ•„์š”ํ•ด~~~
ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„  ๋จผ์ € ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ดor ์ปดํŒŒ์ผ ์–ธ์–ด๋ฅผ ์„ค๋ช…ํ•ด์•ผ ํ•˜๋Š”๋ฐ
1.์ธํ„ฐํ”„๋ฆฌํ„ฐ์–ธ์–ด
์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์›์‹œ์ฝ”๋“œ(ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ)๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—†์ด ํ•œ์ค„ ํ•œ์ค„ ํ•ด์„ํ•˜์—ฌ ๋ฐ”๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์–ธ์–ด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
2.์ปดํŒŒ์ผ ์–ธ์–ด
์ปดํŒŒ์ผ ์–ธ์–ด๋Š” ์›์‹œ์ฝ”๋“œ(ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ)๋ฅผ ๋ชจ๋‘ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„์— ๊ธฐ๊ณ„(JVM ๊ฐ™์€ ๊ฐ€์ƒ ๋จธ์‹ )์— ๋„ฃ๊ณ  ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ‘€
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์žฅ์ ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ •์  ํƒ€์ž… ์ฒดํฌ์™€ ๊ฐ•๋ ฅํ•œ ๋ฌธ๋ฒ•์„ ์ถ”๊ฐ€ํ•œ ์ปดํŒŒ์ผ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ฒƒ์„ ๊ฐ์ง€ํ•ด ์ค๋‹ˆ๋‹ค.
์˜คํƒ€ ๊ฐ์ง€์™€ ๋ฌธ๋ฒ•์ฒดํฌ๋Š” ๋ฌผ๋ก ์ด๋ฉฐ, ํƒ€์ž… ์ฒดํฌ๊ฐ€ ์˜ฌ๋ฐ”๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ฑฐ๋‚˜, ๋ฌด์กฐ๊ฑด null ์ด๋‚˜ undefined๋กœ ๋–จ์–ด์ง€๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ์ง€ ํ•ด์ค๋‹ˆ๋‹ค!

๊ทธ๋ ‡์ง€๋งŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋„ ๋‹จ์ ์ด ์žˆ๋Š”๋ฐ..
1.์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“ˆ์„ install ํ•˜๋ ค๊ณ  ํ•ด๋„ d.ts ํŒŒ์ผ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.
2.์™„๋ฒฝํ•˜์ง€ ์•Š์€ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชป์ฐพ๋Š”๋‹ค..

<์ฐธ๊ณ  ๋งํฌ>
(https://lazygay.tistory.com/14?category=1040487)
(https://dzone.com/articles/understanding-loose-typing-jav)
์˜์–ด์‚ฌ์ดํŠธ๋ฅผ ๋ฒˆ์—ญํ•ด์„œ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด์ค€ ์‚ฌ์ดํŠธ
(https://bestalign.github.io/dev/understanding-loose-typing-in-javascript/)
<์ปดํŒŒ์ผ ์–ธ์–ด,์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด ์ฐธ๊ณ  ์‚ฌ์ดํŠธ>
hashcode.co.kr/questions/7560/javascript-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%96%B8%EC%96%B4%EC%9D%B8%EA%B0%80%EC%9A%94-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0-%EC%96%B8%EC%96%B4%EC%9D%B8%EA%B0%80%EC%9A%94
<ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด์„œ!>
์ถœ์ฒ˜: https://enfanthoon.tistory.com/171 [June Dev Blog:ํ‹ฐ์Šคํ† ๋ฆฌ]

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊พธ์ค€๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€