[JavaScript] 1. 변수 및 자료형

Zero·2023년 2월 12일
0

JavaScript

목록 보기
1/35

JavaScript 에서 변수를 선언할때는 , 변하지 않는 값은 const
변할 수 있는 값은 let으로 선언해라.

  • const BIRTH_DAY = "99.09.26";
  • let clothes = 3;

var과 let의 차이는 무엇일까 ?

case 1)

var name = 'Mike';
console.log(name);

var name = 'Jane';
console.log(name);

case 2)

console.log(name);
var name = 'Mike';

다음과 같이 var는 한번 선언된 변수를 다시 선언할 수 있지만 let은 오류를 발생한다.
또 , var는 선언하기 이전에 사용할 수 있다. var로 선언된 변수는 최상위로 끌어진 것처럼 동작한다. (호이스팅)

  • 따라서 위의 코드에서 할당이 이루어지기 이전에 동작하기 때문에 name 을 출력했을때 undefined가 출력됨.

호이스팅

스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동되는 것

그렇다면 왜 let은 var처럼 동작하지 않고 Error를 내는 것일까 ?

TDZ

Temporal Dead Zone : 이 구간에 있는 변수는 사용을 할 수 없음 , 스코프의 시작지점부터 초기화 시작지점까지를 나타낸다. let과 const는 이 구간의 영향을 받는데 할당을 하기 전에는 사용할 수 없다. 이 때문에 let 도 호이스팅이 이루어지지만 에러가 발생하게 된다.

-> 결론

  • var 는 선언단계와 초기화단계가 한번에 이루어짐
  • let 은 선언단계와 초기화단계가 구분되어 있음.
  • const 는 선언과 동시에 할당을 해주어야함

스코프

var : 함수 스코프
let , const : 블록 스코프

ex)

if(age > 19) {
	var txt = '성인';
}
console.log(txt); // '성인' 

--> 그러나 let ,const는 다음과 같이 사용불가하고 함수 내에서만 사용할 수 있다.
--> var 도 함수 내에서 선언되면 함수 내에서만 사용할 수 있다.

변수 선언 규칙

1) 변수는 문자와 숫자 , $와 _만 사용한다.

2) 첫 글자는 숫자가 될 수 없다.

3) 예약어는 사용할 수 없다.
// ex) class는 이미 js에서 예약어로 사용중인 이름이므로 변수명 사용 불가)

4) 가급적 상수는 대문자로 작성한다.

5) 변수명은 읽기 쉽고 이해할 수 있도록 선언한다.



자료형

문자열

문자열 선언 방식은 "" , '' , `` 세가지 방식이 있는데

1) " " : 문자 중간에 '를 사용하는 문자열인 경우에 큰 따옴표로 감싸주면 편하다

2) ' ' : 큰 따옴표와 별 차이는 없지만 중간에 '를 표현하려면 \' 로 표현해주어야 한다.

3) `` : 백틱으로 문자열 사이에 변수나 수식, ${변수명} 또는 ${수식} 을 이용할 때 사용한다.
또 여러줄을 표현할 수 있다.

문자열은 배열과 동일하게 []로 접근할 수 있다. 하지만 [인덱스]를 통해 값을 바꾸는 것을 불가하다.

관련함수

  • toUpperCase() / toLowerCase() : 대소문자로 변환
  • indexOf ('문자') 를 통해 첫번째 위치를 반환함 , 없으면 -1 반환
  • str.slice(n,m)
    : n이 시작점이고 m은 끝 m이 없으면 문자열 끝까지이며 있으면 m-1까지 포함
    음수면 끝에서부터 센다. (str.slice(2,-2) : 2에서부터 끝에서 2번째까지 반환)
  • str.substring(n,m)
    : n과 m사이 문자열 반환 , 음수는 0으로 인식
  • str.substr(n,m) : n부터 시작해서 m개를 가져옴 (2,4) : 2에서부터 2,3,4,5 까지 4개
  • str.trim() : 앞 뒤 공백 제거
  • str.repeat(n) : n번 반복
  • includes : includes(문자) : 포함되어 있으면 true 없으면 false를 반환한다.

숫자형

정수형 , 실수형 등 다양한 자료형이 있음

  • 만약 1/0 을 수행하는 경우엔 Inf를 나타낸다.
  • 문자열/숫자 는 NaN 으로 Not a Number 를 나타낸다.

숫자와 관련된 작업을 할 때 NaN을 항상 염두에 두고 작업해야 한다.

Boolean

  • true/false 로 구성

null 과 undefined

  • null : 존재하지 않는 값
  • undefined : 값 자체가 할당되지 않음

-> 변수를 선언하고 아무런 값을 할당하지 않으면 undefined 출력

typeof 연산자

  • 변수의 자료형을 알아낼 수 있는 함수
  • 다른 개발자가 작성한 변수의 타입이나 , API를 사용할 때 보통 사용한다.

0개의 댓글