JS: 데이터 타입과 , var,let,const~

선화·2022년 5월 11일

자바스크립트에서의 변수
: 변수 (variable)은 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 또는 그 메모리 공간을 식별하기 위해 붙인 이름

그래서?
할당 : 변수에 값을 저장하는 것(assignment)
참고: 변수에 저장된 값을 읽어들이는 것 (reference)
선언 : 변수명을 자바스크립트 엔진에 알리는 것 (declaration)

변수 선언은 var,let,const로 할 수 있고 ES6에서 let과 const가 추가 되었다.
자바스크립트에서 변수 선언은 선언 => 초기화 단계를 거쳐 수행된다.

  • 선언 : 변수 명을 등록하여 변수 존재를 알리는 것
  • 초기화 단계 : 값을 저장하기 위해 메모리 공간을 확보하고, 암묵적으로 undefind를 할당해 초기화 하는 것.

var

var 는..ES6이전에 나온 js문법, 지금은 되도록 쓰지 말자!

  1. 여러번 재할당할 수 있음 (유연성이 있음)
    : 간단한 테스트에서는 유용 할 수 있겠으나 프로젝트 규모가 커질수록 감당이 힘들어진다. 예기치 못한 값을 반환할 수 있다.
  2. 함수 레벨 스코프로 인해 함수 외부에서 선언한 변수는 모두 전역변수로 된다.
  3. 변수 선언문 이전에 변수를 참조하면 언제나 undefind를 반환한다.

ES6이후에 위 문제 보완을 위해 let,const가 추가 되었다.

var키워드를 사용한 변수선언은 선언, 초기화 단계가 동시에 진행되어서 암뭄적으로 undefind를할당해 초기화한다.
자바스크립트 엔진은 소스코드를 한줄씩 실행하기에 앞서, 변수 선언을 포함한 모든 선언문을 찾아내 먼저 실행한다.
=> 변수선언이 어디에 있든 상관없이 다른 코드보다 먼저 실행되는 트징은 호이스팅이라고 한다.

let, const

let
변수명을 중복으로 선언을 불가능하지만, 재할당은 가능하다 (중요!)
재할당을 해 주어야 하는 데이터등에 선언 해 주면 좋다.

const
const는 반드시 선언과 초기화를 동시에 진행되어야 한다.
const name;을 하면 Syntax에러가 난다는 소리다. let과 마찬가지로 재선언이 불가능하며, 나아가 재할당도 불가능하다
바뀌지 않는 상수를 선언할 때 사용 해 주는 것이 좋다.

정리
1. 변수의 스코프는 최대한 좁게 만드는 것
2. var => let => const 순으로 추천
변경되지 않는값 이라면 웬만해서는 const를 사용해서 변수를 선언하는 것이 좋다.

Data types

js의 언어타입은 "원시값"과 "객체"로 나뉜다.

  • 원시타입 (Primitive data type) : 원시 타입의 값은 변경 불가능한 값 (immutable value)이며 pass-by-value(값에 의한 전달) 이다.
    • Boolean
    • null
    • undefined
    • Number
    • String
    • symbol(ES6에서 추가됨)

1.boolean 타입
논리요소를 나타냄, true 와 false 두가지 값을 가질 수 있음

2.Null
null하나의 값만 가질 수 있다.

  1. Undefind
    값을 할당하지 않은 변수는 undefind값을 가진다.

4.Number
말 그대로 숫자, 우리가 일반적으로 알고 있는 숫자와 그 성격이 동일하다. 숫자를 이용하여 덧셈, 뺄셈 ,곱셈, 나눗셈 등의 연산을 할 수 있다.

  1. String
    텍스트 데이터를 나타내는데 사용한다.

  2. Symbol
    변경 불가능한 원시타입의 값이다. 이름의 충돌 위험이 없는 유일한 객체의 Property Key를 만들기 위해 사용한다. 고유한 식별자를 만들 수 있다.
    출력할 때 그냥은 출력이 안되고 .description을 해야 한다.

Dynamic typing

// 5. Dynamic typing: dynamically typed langauge
let text = 'hello';
console.log(text.charAt(0)); // h
console.log(`value: ${text}, type: ${typeof text}`);
text = 1;
console.log(`value: ${text}, type: ${typeof text}`);
text = '7' + 5;
console.log(`value: ${text}, type: ${typeof text}`);
text = '8' / 2
console.log(`value: ${text}, type: ${typeof text}`);
console.log(text.charAt(0)); // error!!
  1. js는 중간에 변수의 형 변환이 드라마틱하게 가능하지만..
  2. 수 많은 에러를 불러 일을 킬 수 있다.
  3. 이를 해결하기 위해 나온 문법이 타입스크립트이다.

참고
var, let, const의 차이 ⏤ 변수 선언 및 할당, 호이스팅, 스코프
드림코딩) 데이터타입, data types, let vs var, hoisting | 프론트엔드 개발자 입문편 (JavaScript ES5+)

profile
learn-everywhere

0개의 댓글