고슴맨쉬
망치와 공(空)
고슴맨쉬
  • 분류 전체보기 (155)
    • 💡 UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • 🟨 JavaScript (66)
      • 개념 (42)
      • 정리 (2)
      • 문제풀기 (프로그래머스, 코딩애플) (15)
      • 응용하여 자동화or문제해결하기 (2)
      • 기타 (5)
    • ⚛️ React (49)
      • 개념 (27)
      • 개념(Redux) (3)
      • 정리 (4)
      • 문제풀기 (코딩애플: React) (15)
    • 📘 TypeScript (10)
      • 개념 (8)
      • 문제풀기 (코딩애플) (2)
    • 🌐 HTML,CSS (18)
      • 실무에서 자주 발생한 오류들 (10)
      • 뒤늦게 알아서 뼈아픈 유용한 CSS (6)
      • 기타 자주 쓰는 CSS (2)
    • 💻 CS (8)
      • CS (5)
      • 정규표현식 (2)
      • Git,Github (1)

태그

  • CSS
  • 오류
  • json
  • array
  • state
  • JavaScript
  • TypeScript
  • redux
  • react
  • axios
  • 프로그래머스
  • 코딩애플
  • class
  • 삼항연산자
  • Ajax
  • CS
  • object
  • Props
  • UXUI
  • useEffect
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
고슴맨쉬

망치와 공(空)

🟨 JavaScript/개념

[드림코딩/코딩앙마] strict모드와 var/let/const

2022. 4. 14. 12:38
'use strict';

 

이 코드를 스크립트나 함수의 시작 부분에 선언하고 strict 모드로 개발한다면,

자동으로 허용되는 잘못된 코드를 오류로 변경하여 (존재하지 않는 변수/객체 등을 잡아내는 등)

모든 코드가 strict 모드에서 실행되어 불필요한 오류를 예방하고 성능 개선도 기대할 수 있다.

(* es5에서 추가됨)


1. var

var x = "Hello world";
var x = 0;

//오류없이 작동한다.
선언+초기화 -> 할당

 

어디든 호이스팅이 가능한 선언방식이다. block scope을 전부 무시하고 function scope를 사용한다. 변수를 어느 곳에서나 불러온다. 위험부담이 크다.

 

그러나 es6 이후 아래 선언방식이 나온다.


2. let

let x = "Hello world";
let x = 0;

// SyntaxError: 'x' has already been declared
선언 -> 초기화 -> 할당

 

변수가 수정될 수 있는 방식이다. (mutable type)

let의 호이스팅은 scope 단위로 이루어진다.

let x = 30;
function showX(){
    console.log(x);
    let x = 10;
}
showX();

 

위 예시에서 console.log(x)는 TDZ(변수가 할당되기 전으로, 사용 불가한 영역)이다.

hoisting은 되었으나 TDZ가 발생하여 showX는 30도 10도 찍지 않게 되므로,

showX는 console.log(x)에서 ReferenceError가 나서 작동하지 않는다.


3. const

const x = "Hello world";
선언 + 초기화 + 할당 (동시에)

 

const는 한번 할당된 변수를 변경할 수 없다. (immutable data type)


출처 : 드림코딩 https://www.youtube.com/@dream-coding / 코딩앙마 https://www.youtube.com/@codingangma

'🟨 JavaScript > 개념' 카테고리의 다른 글

[코딩앙마 외] 객체 리터럴과 객체 접근법, 그리고 생성자 함수  (0) 2022.04.14
[코딩앙마 외] 객체(Object)와 프로퍼티(property)  (0) 2022.04.14
[코딩앙마] 함수선언문과 함수표현식, 그리고 화살표함수 (추가)  (0) 2022.04.14
[드림코딩/코딩앙마] scope와 hoisting, 그리고 TDZ (추가)  (0) 2022.04.14
[드림코딩] html에 js를 링크하는 여러가지 방법들  (0) 2022.04.14
    '🟨 JavaScript/개념' 카테고리의 다른 글
    • [코딩앙마 외] 객체(Object)와 프로퍼티(property)
    • [코딩앙마] 함수선언문과 함수표현식, 그리고 화살표함수 (추가)
    • [드림코딩/코딩앙마] scope와 hoisting, 그리고 TDZ (추가)
    • [드림코딩] html에 js를 링크하는 여러가지 방법들
    고슴맨쉬
    고슴맨쉬
    부수되 집착하지 않고, 이해하되 머무르지 않기

    티스토리툴바