[Javascript]이해하기-2

yojuyoon·2020년 6월 12일
0

TIL👌

목록 보기
3/23
post-thumbnail

1. 변수 Variavle

변수란 변경될 수 있는 값. Mutable 데이터 타입
자바스크립트에서 변수에 대한 값을 만들 때는 let을 사용.
ES6에서 추가되었음.

어플리케이션을 실행하게되면 어플리케이션마다 쓸 수 있는 메모리가 할당되어지게 된다. 이 메모리들은 비어진 박스. 어플리케이션마다 쓸 수 있는 박스가 제한적. let을 사용하여 name을 정의하면 하나의 박스를 사용하여 값을 저장. 추후에 이 값을 변경하면 다른 값을 저장하게 되는것.

Block Scope

블록 스코프를 사용하게 되면 블록 안에서만 변수를 사용 가능.
글로벌 스코프를 사용하게 되면 어느 전역에서나 사용 가능
글로벌 스코프는 어플리케이션이 실행되는 순간부터 끝날때까지 메모리에 탑재되어있기때문에 최소화해서 사용하는 것이 좋고, 가능하면 클래스나 함수 if나 for로 필요에 의해서 정의하는 것이 좋다.

let 이전에는 var 사용

var를 이제 쓰면 안되는 이유는?
1) 선언도 하기 전에 값을 할당할 수 있다. 이를 출력하는 것도 가능!

-> var hoisting

hoisting이란
어디에 선언했느냐에 상관 없이 항상 제일 위로 선언을 끌어올려주는 것을 말한다. 영어로 '끌어올려주다'의 뜻

2) 블럭 스코프를 무시.
블럭 안에서 선언한 변수는 블럭 밖에서 출력할 수 없지만 var를 사용하면 출력 가능하다. 초창기에는 이런 유연성을 사용해서 재빠르게 프로그램을 짜서 동작 가능하게 만들었지만, 어느정도 규모있는 프로젝트를 진행하면서는 선언하지도 않은 값들이 할당되어지는 오류가 발생한다.

2. 상수 Constants

상수란 한 번 할당하면 절대 바뀌지 않는 값. Immutable 테이터타입.

상수를 사용하면 좋은 점?

  1. Security
    한 번 작성한 값을 다른 해커들이 이상한 코드를 삽입해서 값을 변경하는 것을 방지할 수 있다.
  2. Thread Safety
    어플리케이션이 실행되면 한가지의 프로세스가 할당이 되고 그 프로세스 안에는 다양한 thread가 동시에 돌아가면서 어플리케이션을 좀 더 효율적이고 빠르게 동작할 수 있도록 도와줌. 다양한 스레드들이
    동시에 변수에 접근해서 값을 변경할 수 있는데, 이게 위험함. 그래서 가능하면 값이 변하지 않는 것을 사용하는 것이 좋음.
  3. Reduce human mistakes
    내가 혹은 동료가 코드를 변경할 때 실수를 방지해줄 수 있다.

3. JavaScript ES6 데이터 타입

primitive 타입

  • 더이상 작은 단위로 나눠질 수 없는 한가지 아이템.
  • number, string, boolean, null, undefiend, symbol
  1. Number
    자바스크립트에서는 얼마나 큰 숫자를 할당하느냐를 신경쓰지 않아도 된다.
    정수나 소숫점의 숫자 상관없이 number 타입으로 할당.
    하지만 숫자를 0이나 마이너스. 스트링을 나누게 되면 에러가 발생.-조심..
  1. String
  2. Boolean
    false : 0, null, undefined, NaN, ' '
    true : any other value
  3. null
    nothing을 지정해주는 것
  4. undefined
    선언은 되었지만 아무 값도 지정되어있지 않은 상태.

6.Symbol
고유한 식별자가 필요할 때 쓰임.
이 때 스트링을 쓰게되면 다른 모듈이나 파일에서 동일한 스트링을 썼을 때 동일한 식별자로
간주되지만 심볼로 동일한 스트링을 작성했어도 다른 심볼로 작성되기 때문에 고유한 식별자를
만들 때 쓰임.

Object 타입

  • 싱글 아이템들을 여러개 묶어서 한 단위로 관리할 수 있게 해주는 아이템
  • fuction, first-class function

조금씩 알아가는 자바스크립트와 나의 사이 ..❤︎
물론 외사랑이지만.. 알아가게 되어 기쁘다...ㅎㅎ

profile
하고싶은게 많은 사람. Front-end Developer

0개의 댓글