λ³€μˆ˜λž€?

κ°’μ˜ μœ„μΉ˜(μ£Όμ†Œ)λ₯Ό κΈ°μ–΅ν•˜λŠ” μ €μž₯μ†Œμ΄λ‹€. μ—¬κΈ°μ„œ κ°’μ˜ μœ„μΉ˜λž€ 값이 μœ„μΉ˜ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ μƒμ˜ μ£Όμ†Œλ₯Ό μ˜λ―Έν•œλ‹€.

즉, λ³€μˆ˜λž‘ 값이 μœ„μΉ˜ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” μ–Έμ–΄λ‘œ λͺ…λͺ…ν•œ μ‹λ³„μžμ΄λ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ™μ νƒ€μž…μ–Έμ–΄μ΄κΈ° λ•Œλ¬Έμ— λ³€μˆ˜μ˜ νƒ€μž… 지정 없이 값이 ν• λ‹Ή λ˜λŠ” κ³Όμ •μ—μ„œ μžλ™μœΌλ‘œ λ³€μˆ˜μ˜ νƒ€μž…μ΄ κ²°μ •λœλ‹€.(Type Inference) λ”°λΌμ„œ λ³€μˆ˜μ— μ—¬λŸ¬κ°€μ§€ νƒ€μž…μ˜ 값을 자유둭게 ν• λ‹Ή ν•  수 μžˆλ‹€.


데이터 νƒ€μž…

데이터 νƒ€μž…(Data Type)은 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λ°μ΄ν„°μ˜ μ’…λ₯˜λ₯Ό λ§ν•œλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 데이터 νƒ€μž…μ€ μ›μ‹œνƒ€μž…κ³Ό 객체 νƒ€μž…μœΌλ‘œ λ‚˜λˆ„μ–΄ 진닀.

 

μ›μ‹œνƒ€μž…( primitive data type)

- boolean

- null

- undefined

- number

- string

- symbol(ES6)

 

객체 νƒ€μž…(object / reference type)

- object

 

μ›μ‹œ νƒ€μž…(Primitive Data Type)

μ›μ‹œ νƒ€μž…μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’(immutable value)이며 pass-by-value(값에 μ˜ν•œ 전달)이닀.

 

number

Java의 경우 μ •μˆ˜μ™€ μ‹€μˆ˜λ₯Ό κ΅¬λΆ„ν•˜μ—¬ int, long, double λ“±κ³Ό 같이 λ‹€μ–‘ν•œ 숫자 νƒ€μž…μ΄ μ‘΄μž¬ν•˜μ§€λ§Œμžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” number ν•˜λ‚˜μ˜ 숫자 νƒ€μž…λ§Œ μ‘΄μž¬ν•œλ‹€.+) Infinity : μ–‘μ˜ λ¬΄ν•œλŒ€, -Infinity : 음의 λ¬΄ν•œλŒ€, NaN : μ‚°μˆ  μ—°μ‚° λΆˆκ°€ (not-a-number)

 

string

λ¬Έμžμ—΄ νƒ€μž…μ€ ν…μŠ€νŠΈ 데이터λ₯Ό λ‚˜νƒ€λ‚΄λŠ”λ° μ‚¬μš©ν•œλ‹€. λ¬Έμžμ—΄μ€ λ°°μ—΄μ²˜λŸΌ 인덱슀λ₯Ό 톡해 μ ‘κ·Όν•  수 μžˆλŠ”λ° 이와 같은 νŠΉμ„±μ„ κ°–λŠ” 데이터λ₯Ό μœ μ‚¬λ°°μ—΄μ΄λΌ ν•œλ‹€.κ·Έλ ‡λ‹€κ³ ν•΄μ„œ λ°°μ—΄μ²˜λŸΌ λ³€κ²½ν•  수 μžˆλŠ” 것은 μ•„λ‹ˆλ‹€.  μž¬ν• λ‹Ήμ€ κ°€λŠ₯ν•˜λ‹€.

 

boolean

λΆˆλ¦¬μ–Έ νƒ€μž…μ˜ 값은 논리적 μ°Έ, 거짓을 λ‚˜νƒ€λ‚΄λŠ” true와 false 뿐이닀.λΉ„μ–΄μžˆλŠ” λ¬Έμžμ—΄κ³Ό null, undefined, 숫자 0은 false둜 κ°„μ£Όλœλ‹€.

 

undefined

undefined νƒ€μž…μ˜ 값은 undefinedκ°€ μœ μΌν•˜λ‹€. μ„ μ–Έ 이후 값을 ν• λ‹Ήν•˜μ§€ μ•Šμ€ λ³€μˆ˜λŠ” undefined값을 가진닀. μ΄λŠ” λ³€μˆ˜ 선언에 μ˜ν•΄ ν™•λ³΄λœ λ©”λͺ¨λ¦¬ 곡간을 처음 할당이 μ΄λ£¨μ–΄μ§ˆ λ•Œ κΉŒμ§€ 빈 μƒνƒœλ‘œ 내버렀두지 μ•Šκ³  μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 undefined둜 μ΄ˆκΈ°ν™”ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

이렇기 λ•Œλ¬Έμ— κ°œλ°œμžκ°€ μ˜λ„μ μœΌλ‘œ 값을 ν• λ‹Ήν•˜μ§€ μ•Šμ„ λ•ŒλŠ” ν—·κ°ˆλ¦¬μ§€ μ•Šκ²Œ null을 ν• λ‹Ήν•œλ‹€.

null

null νƒ€μž…μ˜ 값은 null이 μœ μΌν•˜λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜λ―€λ‘œ null은 Null, NULLκ³Ό λ‹€λ₯΄λ‹€.null은 μ˜λ„μ μœΌλ‘œ λ³€μˆ˜μ— 값이 μ—†λ‹€λŠ”κ²ƒμ„ λͺ…μ‹œ ν•  λ•Œ μ‚¬μš©ν•œλ‹€. μ΄λŠ” λ³€μˆ˜κ°€ κΈ°μ–΅ν•˜λŠ” λ©”λͺ¨λ¦¬ μ–΄λ“œλ ˆμŠ€μ˜ μ°Έμ‘° 정보λ₯Ό μ œκ±°ν•˜λŠ” 것을 μ˜λ―Έν•˜λ©° μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 λˆ„κ΅¬λ„ μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ— λŒ€ν•΄ 가비지 μ½œλ ‰μ…˜μ„ μˆ˜ν–‰ν•  것이닀.

 

νƒ€μž…μ„ λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜λŠ” typeof μ—°μ‚°μžλ‘œ null값을 연산해보면 null이 μ•„λ‹Œ objectκ°€ λ‚˜μ˜¨λ‹€ κ·ΈλŸ¬λ―€λ‘œ nullνƒ€μž…μ„ 확인할 λ•ŒλŠ” typeof말고 === μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€

var foo = null;
console.log(typeof foo === null); // false
console.log(foo === null);        // true

symbol

심볼(symbol)은 ES6μ—μ„œ μƒˆλ‘œ μΆ”κ°€λœ 7번째 νƒ€μž…μœΌλ‘œ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ μ›μ‹œ νƒ€μž…μ˜ 값이닀. 심볼은 주둜 μ΄λ¦„μ˜ 좩돌 μœ„ν—˜μ΄ μ—†λŠ” μœ μΌν•œ 객체의 ν”„λ‘œνΌν‹° ν‚€λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.

// 심볼 keyλŠ” μ΄λ¦„μ˜ 좩돌 μœ„ν—˜μ΄ μ—†λŠ” μœ μΌν•œ 객체의 ν”„λ‘œνΌν‹° ν‚€
var key = Symbol('key');
console.log(typeof key); // symbol

var obj = {};
obj[key] = 'value';
console.log(obj[key]); // value

 


κ°μ²΄νƒ€μž…(Object type, Reference type)

κ°μ²΄λŠ” 데이터와 κ·Έ 데이터에 κ΄€λ ¨ν•œ λ™μž‘(절차,방법,κΈ°λŠ₯)을 λͺ¨λ‘ 포함할 수 μžˆλŠ” κ°œλ…μ  μ‘΄μž¬μ΄λ‹€.

κ°μ²΄λŠ” μ›μ‹œνƒ€μž…μ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€ 값듀이 λͺ¨λ‘ 객체이고 κ°μ²΄λŠ” pass-by-reference(참쑰에 μ˜ν•œ 전달) λ°©μ‹μœΌλ‘œ μ „λ‹¬λœλ‹€.


λ³€μˆ˜

λ³€μˆ˜λŠ” var,let,const ν‚€μ›Œλ“œλ₯Ό 톡해 μ„ μ–Έν•˜κ³  ν• λ‹Ήμ—°μ‚°μžλ₯Ό 톡해 값을 ν• λ‹Ήν•œλ‹€. 그리고 μ‹λ³„μžμΈ λ³€μˆ˜λͺ…을 μ‚¬μš©ν•΄ λ³€μˆ˜μ— μ €μž₯된 값을 μ°Έμ‘°ν•œλ‹€.

 

동적 타이핑(Dynamic Typing)

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 동적 νƒ€μž…(dynamic/ weak type)언어이닀. 이것은 λ³€μˆ˜μ˜ νƒ€μž… 지정 없이 값이 ν• λ‹Ήλ˜λŠ” κ³Όμ •μ—μ„œ κ°’μ˜ νƒ€μž…μ— μ˜ν•΄ μžλ™μœΌλ‘œ νƒ€μž…μ΄ κ²°μ • 될 κ²ƒμ΄λΌλŠ” λœ»μ΄λ‹€. λ”°λΌμ„œ 같은 λ³€μˆ˜μ— μ—¬λŸ¬ νƒ€μž…μ˜ 값을 ν• λ‹Ήν•  수 μžˆλ‹€.

이λ₯Ό 동적 타이핑(Dynamic Typing)μ΄λΌν•œλ‹€.

 

 

 

μ°Έκ³ 

poiemaweb.com/js-data-type-variable

 

Data type & Variable | PoiemaWeb

λ³€μˆ˜λŠ” κ°’μ˜ μœ„μΉ˜(μ£Όμ†Œ)λ₯Ό κΈ°μ–΅ν•˜λŠ” μ €μž₯μ†Œμ΄λ‹€. κ°’μ˜ μœ„μΉ˜λž€ 값이 μœ„μΉ˜ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ μƒμ˜ μ£Όμ†Œ(address)λ₯Ό μ˜λ―Έν•œλ‹€. 즉, λ³€μˆ˜λž€ 값이 μœ„μΉ˜ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œ(Memory address)에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄

poiemaweb.com

 

+ Recent posts