var_let_const

var

초기에 js 변수 선언방식이다.

특징

  • 블록 스코프가 없다.

  • 이미 존재하는 변수가 있으면 이전의 변수를 무시한다.

    var user = 'Pete';
    var user = 'John';
    
    alert(user); // John

    블록 스코프가 없는데다가 이전의 변수를 무시하고 덮어쓰기 때문에 작업시 오류를 범할 확률이 높다.

  • 선언하기 전에 사용할 수 있다. var 선언은 선언 위치에 상관없이 함수내에서 선언했다면 함수가 시작될때,전역에서 선언했다면 스크립트가 시작될 때 처리된다.

      ```js
      function sayHi() {
          phrase = "Hello";
          alert(phrase);
          var phrase;
      }
      sayHi();
      ```
  • 선언은 호이스팅 되지만 할당은 호이스팅 되지 않는다.

    function sayHi() {
      alert(phrase);
      var phrase = 'Hello';
    }
    sayHi(); //undefined

    위의 함수의 내부 동작방식은 다음과 같다.

    function sayHi() {
      //var phrase;
    
      alert(phrase);
      var phrase = 'Hello';
    }
    sayHi(); //undefined

즉시 실행 함수 표현식 (IIFE, Immediately-Invoked Function Expressions)

js는 함수 선언문으로 정의한 함수를 정의와 동시에 바로 호출하는 것을 허용하지 않기 때문에 바로 실행하는 것이 불가능하다.

하지만 함수 선언문을 ()로 감싸 선언문이 아닌 표현식으로 인식하도록 속여 함수의 이름이 없으며, 즉시 호출이 가능한 함수를 작성할 수 있다.

(function() {
  alert("함수를 괄호로 둘러싸기");
})();

(function() {
  alert("전체를 괄호로 둘러싸기");
}());

!function() {
  alert("표현식 앞에 비트 NOT 연산자 붙이기");
}();

+function() {
  alert("표현식 앞에 단항 덧셈 연산자 붙이기");
}();

let

const

c/c++의 const, java의 final과 같이 상수변수를 선언하기위한 방식

Last updated