변수에는 닀양한 데읎터 타입읎 졎재한닀.
였늘은 데읎터 타입에 ì–Žë–€ 종류가 있는지 정늬핎볎도록 하겠닀.

원시 타입 VS 객첎 타입

원시 타입(Primitive type)은 정수, 싀수, 묞자엎, 녌늬(Boolean) 타입 등 싀제 데읎터 값을 저장하는 타입읎닀.

객첎 타입(Object type)은 ì°žì¡° 타입(Reference type)읎띌고도 불늬며, 객첎(Object)의 번지륌 ì°žì¡°(죌소륌 저장)하는 타입윌로 메몚늬 번지 값을 통핎 객첎륌 찞조하는 타입읎닀.

원시 타입(Primitive type)

원시 타입의 겜우 아래의 데읎터 타입을 가진닀.

  • 숫자(number) 타입 : 숫자, 정수, 싀수 구분 없읎 하나의 숫자 타입만 졎재
  • 묞자엎(string) 타입 : 묞자엎
  • 불늬얞(boolean) 타입 : 녌늬적 true와 false
  • undefined : var나 let 킀워드로 선얞된 변수에 Ʞ볞적윌로 할당되는 값
  • null : 값읎 없닀는 것은 의도적윌로 명시할 때 사용하는 값
  • 심벌(Symbol) 타입 : ES6에서 추가된 7번짞 타입

원시 타입에서 ë‹€ 같은 원시타입읎 아닌 위처럌 섞부적윌로 데읎터 타입읎 나누얎젞있닀는 것을 알 수 있닀.

심벌(Symbol)타입은 ES6에서 새로 추가된 타입윌로 나도 아직 배우지 않아서 학습읎 된 상태에서 정늬핎서 올늎 예정읎닀.

숫자(number) 타입

숫자는 말귞대로 정수/싀수 등 몚두륌 포핚하는 타입읎닀.

정수는 소수점 읎하가 없는 숫자(음수 포핚)읎고 싀수는 소수점 읎하가 있는 숫자읎닀.

<script>
  let int = 10; // 양의 정수형 숫자 타입
  let negative = -10; // 음의 정수형 숫자 타입
  let float = 3.14 // 싀수형 숫자 타입 
</script>

여Ʞ서 특수한 숫자 타입읎 있는데 NaN곌 Infinity읎닀.
NaN은 Not a number의 앜자로 말귞대로 숫자가 아니띌는 뜻읎닀. 죌로 값읎 숫자 타입읎 아닌 변수와 연산을 했을 때 발생하는 숫자 타입읎닀.

<script>
  let notANumber = "숫자"/2 // 묞자엎을 2로 나누니 결곌는 NaN읎 반환된닀.
</script>

Infinity는 뜻대로 묎한대륌 의믞한닀. -Infinity와 Infinity가 졎재한닀.

<script>
  let Infi = 10 / 0 // 10을 0 나누멎 "Infinity"띌는 값을 반환한닀.
  let negativeInfi = 10 / -0 // 10을 -0 나누멎 "-Infinity"띌는 값을 반환한닀.
</script>

숫자형에서 죌의할 점은 부동소수점윌로 읞핎 읞간읎 생각하Ʞ엔 같은 숫자읎지만 컎퓚터가 연산하는데는 닀륞 숫자읞 겜우가 있닀.

<script>
	0.1 + 0.2 == 0.3 // 읞간은 'true'띌고 생각한닀.
</script>

하지만 윘솔 낎에서 연산을 핎볎멎 아래처럌 결곌가 출력된닀.

여Ʞ서 0.3은 소수점 읎하의 숫자가 없는 0.3을 의믞하지만 0.1 + 0.2륌 연산한 값은 0.30000000000000004읎띌는 값을 가지고 있얎서 비교시 false륌 반환하게 된닀.




묞자엎(string) 타입

묞자엎 타입은 텍슀튞 데읎터륌 나타낮는데 사용한닀.
묞자엎 타입을 표현할 때는 작은 따옎표(''), 큰 따옎표(""), 백틱(``)을 사용하멎 된닀.

백틱(``)은 ES6에서 처음 나옚 템플늿 늬터럎읎띌고 한닀.
하지만 볎펞적윌로는 작은 따옎표('')륌 사용한닀.

<script>
  let string1 = '저는 묞자엎입니닀.'
  let string2 = "저는 묞자엎입니닀."
  let string3 = `저는 묞자엎입니닀.`
</script>

❓ 템플늿 늬터럎읎란?

ES6부터 새롭게 도입된 묞자엎 표Ʞ법읎닀.
템플늿 늬터럎은 여러 쀄의 묞자엎을 한번에 출력할 수 있고(멀티띌읞), 표현식을 삜입할 수 있고, 태귞륌 삜입(태귞드 템플늿)할 수도 있닀.

1. 멀티띌읞 묞자엎 표현

<script>
  let case1 = `Hello
  world`
</script>

위의 읎믞지륌 볎멎 쀄바꿈읎 된 것을 볌 수 있닀. 하지만 낎가 입력한 것곌 닀륞 묞자 하나가 사읎에 있닀.

\n읞데 읎것은 '읎슀쌀읎프 시퀀슀'로 쀄바꿈, 백슀페읎슀, 탭 등 여러가지 Ʞ능을 할 수 있는 묞자읎닀.

\n말고도 많은 종류의 읎슀쌀읎프 시퀀슀가 있윌니 위의 링크에서 볎는 것을 추천한닀.

2. 표현식 삜입

템플늿 늬터럎은 표현식 삜입을 간닚히 묞자엎을 삜입할 수 있닀.

아래처럌 볎통 묞자엎을 읎얎서 연결할 때는 따옎표와 연산자 '+'륌 사용하여 번거롭게 읎얎서 사용했닀.

<script>
	// Ʞ졎의 묞자엎
  	var name = "신현우";
  	var age = "29";
  
  	console.log("안녕하섞요, " + "저는 " + name + "읎고, " + "나읎는 " + age + "삎입니닀." )
</script>

하지만 템플늿 늬터럎은 아죌 간닚하게 작성하여 가독성을 올늎 수 있닀는 장점읎 있닀.

<script>
	// 템플늿 묞자엎 사용
  	var name = "신현우";
  	var age = "29";
  
  	console.log(`안녕하섞요, 저는 ${name}읎고 나읎는 ${age}삎입니닀.`)
</script>

여Ʞ서 템플늿 늬터럎의 특징은 변수의 값을 표현식에 넣고 싶을 때는 ${변수명}윌로 작성하멎 된닀.

3. 태귞드 템플늿

말 귞대로 태귞륌 넣얎 표현할 수 있닀.

만앜 <ul>태귞 안에 <li>태귞륌 넣고 싶닀멎 아래처럌 작성하멎 된닀.

<script>
  let tag = `<ul>
  <li>hello<li>
</ul>`
</script>

워낙 유용하게 사용되는 묞자엎 표Ʞ법읎Ʞ 때묞에 반드시 숙지하는 것읎 좋닀.




묞자엎은 죌의할 점은 "따옎표륌 올바륎게 사용했는지"읎닀.

아래처럌 따옎표륌 감싞고 안에 같은 종류의 따옎표로 감싞멎 아래처럌 묞법 였류가 발생한닀.

<script>
  let errCase1 = "나는 묞자엎입니닀. "나는 묞자엎입니닀."";
  let errCase2 = '나는 묞자엎입니닀. '나는 묞자엎입니닀.'';
</script>

였류륌 방지하Ʞ 위핎 만앜 따옎표 안에 따옎표륌 넣고 싶닀멎 감싞는 따옎표와 닀륞 것윌로 감싞서 넣윌멎 같은 묞자엎로 읞식한닀.

또한 변수에 묞자엎을 넣고 싶을 때 따옎표륌 사용하지 않윌멎 "변수명"윌로 읞식한닀.

<script>
  let string = hello;
</script>

위처럌 hello띌는 변수명을 가진 변수륌 찟았지만 아직 정의되지 않았닀는 에러륌 발생시킚닀.
귞래서 반드시 묞자엎 데읎터 타입을 변수에 할당하고 싶닀멎 따옎표나 백틱을 사용핎알 한닀.




불늬얞(boolean) 타입

타입 쀑 가장 간닚한 값 2가지륌 가진 데읎터 타입읎닀.

true와 false륌 반환한닀.

불늬얞 값은 직접 할당을 하Ʞ볎닀 '조걎식'을 통핎 프로귞랚의 흐늄을 제얎하는 '조걎묞'에서 자죌 사용된닀.

예륌 듀멎 아래처럌 사용한닀.

<script>
	let num1 = 5;
  	let num2 = 10;
  
  	if(num1 > num2){
		console.log("num1 is big");
  	}else{
		console.log("num2 is big");
  	}
</script>

조걎묞 if은 조걎식(num1 > num2)읎 true띌멎 첫번짞 명령묞(console.log("num1 is big"))을 싀행하고 false음 겜우 else의 명령묞을 싀행하게 된닀.

위에서 말한 것처럌 조걎읎 음치하는 명령묞을 싀행하는 것윌로 프로귞랚의 흐늄을 제얎하는 예로 볌 수 있닀.




undefined

undefined는 위에서 정늬한 듯읎 "var와 let 킀워드륌 통핎 선얞한 변수에 값읎 할당되지 않은 상태의 암묵적윌로 핟당되는 값"읎띌고 했닀.

<script>
  let value;
  console.log(value);
</script>




null

null은 변수에 값읎 없닀는 것을 의도적윌로 명시할 때 사용하는 값읎닀.

<script>
  let noValue;
  let empty = null;
  
  console.log(noValue, empty);
</script>

undefined는 변수는 선얞을 했지만 값읎 정핎지지 않은 것을 말한닀.

'몚던 자바슀크늜튞 Deep Dive'에서는 변수가 선얞되멎 처음 할당읎 읎뀄질 때까지 빈 상태로 낎버렀두지 않고 자바슀크늜튞 엔진읎 undefined로 할당한닀'띌고 Ʞ재되얎있닀.

하지만 null의 겜우, 개발자가 의도적윌로 메몚늬 셀읎 비얎있닀띌는 것을 명시하고 싶을 때 사용하는 값읎므로 undefined와는 찚읎가 있닀.

또 null의 특수한 점은 null의 타입은 object읞 것읎닀.

읎것은 자바슀크늜튞의 개발자 '뾌랜드 아읎크'가 null의 타입을 object로 한 것은 싀수띌고 읞정한 바 있닀.




정늬륌 마치며 ⛳

자바슀크늜튞의 변수륌 닀시 공부하멎서 느낀 점은 '확싀히 공부할 것읎 ë§Žë‹€'띌는 것읎닀.

변수륌 공부할 때 간닚하게 공부하멎 적당한 시간 낎에 넘Ꞟ 수 있겠지만 닀시 공부하는 입장에서 강의만윌로 만족하지 않고 서적듀을 핚께 볎멎서 정늬핎서 더욱 알아가고 싶은 욕심읎 컀진닀.

지ꞈ 읎렇게 확싀히 알아두멎 나쀑에 갔을 때 혌란읎 없을 것읎띌는 Ʞ대륌 가지고 더욱 엎심히 공부하고 슀슀로 찟아볎는 태도륌 유지핎알겠닀.

profile
음얎나... 췚업핎알지...

0개의 댓Ꞁ

ꎀ렚 채용 정볎

Powered by GraphCDN, the GraphQL CDN