본문 바로가기
카테고리 없음

JS 자료형

by 학습하는 청년 2023. 6. 19.

숫자형

 

문자열

 

불린형

cf. 불 대수

- 일상적인 논리를 수학적으로 표현한 것

 

 

 

 

어떤 넓은 범위를 만족하는 조건식을 만들 때는 if문을 활용하는 것이 좀 더 효과적이고 특정한 값에 일치하는 조건을 만들 때는 switch문이 좀 더 효과적입니다.

그런데 switch문이 익숙하지 않으신 분은 이렇게 if else문으로도 대체가 가능하니깐 switch문의 구조가 너무 어려우신 분은 if else문을 활용하셔도 좋습니다.

한 가지 주의할 점은 조건식에서 등호를 반드시 3개를 입력해 주어야 한다는 점인데요. switch문은 암시적 형 변환을 허용하지 않기 때문입니다.

 

switch문은 값들을 비교할 때 자료형을 엄격하게 구분한다는 것과 if문으로 대체할 때는 반드시 등호 3개로 일치비교를 해야한다는 것.

 

for문

1. 추가동작부분을 꼭 채울 필요는 없다.

for 반복문에서 추가동작부분은 사실 꼭 채울 필요는 없습니다.

하지만, for문의 특성상, 이 추가동작부분이 있기 때문에 여기 동작부분에서는 실제로 반복하고자하는 내용들만 집중하고 어떤 조건과 관련된 부분은 이 소괄호에 집중하면서 좀 더 목적에 맞는 코드를 작성할 수 있게 되는 것이죠.

 

2. 초기화부분에서 생성한 변수는 for문의 로컬변수다.

 

3. 초기화 부분도 반드시 채울 필요는 없다. 단,

단! for문의 소괄호 안쪽 가장 첫번째 세미콜론은 생략할 수 없습니다.

for문의 소괄호 안쪽은 반드시 세미콜론 2개가 필요합니다. 그렇지 않으면 실행 오류를 만나게 된다는 점. 꼭 기억해 주세요!

 

객체

for in문을 활용하면 객체 내부에 있는 모든 프로퍼티들을 하나씩 다룰 수 있다

객체의 프로퍼티는 어떤 순서로 정렬이 되는 걸까요!? 사실 프로퍼티 네임에는 숫자형(양수)을 작성해서 사용할 수도 있습니다.  for in문을 사용할 때 주의해야 할 순간은 바로 정수형 프로퍼티 네임이 있을 때 입니다. 객체는 정수형 프로퍼티 네임을 오름차순으로 먼저 정렬하고, 나머지 프로퍼티들은 추가한 순서대로 정렬하는 특징이 있습니다.

 

 

문자열도 생각해보면 '문자' + '열'이기 때문에 배열과 비슷한 부분들이 많습니다.

배열은 'mutable(바뀔 수 있는)' 자료형인 반면 문자열은 'immutable(바뀔 수 없는)' 자료형

배열은 요소에 접근해서 할당연산자를 통해 요소를 수정할 수 있었죠?

문자열은 한 번 할당된 값을 수정할 수 없습니다. 다르게 표현해서, 변수에 할당된 문자열을 바꾸고 싶다면, 일부를 바꾸는 게 아니라 새로운 문자열을 지정해주어야 한다는 것이죠.

 

 

 

 

중복 선언 허용

var 키워드로 선언한 변수의 첫 번째 문제는, let과 const와는 다르게 중복 선언이 가능하다는 겁니다. 똑같은 이름으로 변수를 한 번 더 선언하게 되면, 에러가 발생하는 것이 아니라 그냥 기존의 변수를 덮어써 버리는 것이죠. let키워드로 선언한 변수에 값을 재할당하는 것과는 엄연히 다릅니다.

이렇게 변수가 중복선언이 되면, 길고 복잡한 코드를 작성할 때 실수를 할 가능성이 커지고, 상황에 따라서는 치명적인 오류가 발생할 수 있습니다.

 

함수 스코프

var 키워드 변수가 사라진 두 번째 문제는 Scope의 문제입니다. let과 const 키워드로 선언한 변수는 if, for, function 등등 어떤 키워드와 관계없이 코드 블록, 즉 {} 중괄호로 감싸진 부분을 기준으로 scope를 갖게 되지만, var 키워드로 선언한 변수는 scope가 function에서만 구분되어 있습니다.

 

끌어올림 (Hoisting)

이런 현상은 함수를 한 번 선언하고 나면 어디서든 유연하게 사용할 수 있다는 장점이 있지만, 코드의 흐름에는 부정적인 영향을 끼칠 수 있습니다. 그래서 함수를 선언할 때는 가급적 코드 윗부분에 선언하거나, 호출을 항상 아래쪽에서 한다거나 나름대로 규칙을 세워서 코드를 작성하시기를 권장드립니다.

댓글