우선, 자바스크립트는 변수를 사용할때 변수 이름을 선언하고, 그 변수 이름에 값을 할당하여 사용을 한다.이런 변수 이름을 선언할 때 var,let,const 같은 키워드를 붙여 선언한다.ex)여기서 var는 기존부터 있었던 키워드이고, let과 const는 ES6 문법
var로 선언된 표현식이나 함수 선언문 등을 실행 단계에서 해당 스코프의 맨 위로 끌어 올리는 것을 뜻한다.자바스크립트의 변수 생성과 초기화의 작업이 분리되어 진행되기 때문이다.ex)위의 예시를 실행시켜보면 TypeError: sum is not a function 라
앞서 호이스팅에 대한 설명에서 let과 const는 선언이 실행되기 전에는 TDZ에 속해있다고 얘기한 바 있다. 모르겠으면 호이스팅(Hoisting)이란? 을 먼저 읽고 오길 바란다. 그럼 TDZ(Temporal Dead Zone)란 무엇일까? TDZ(Tempora
변수를 선언, 초기화, 할당을 하다보면 undefined와 null이라는 타입을 많이 보게된다.근데 듣도보도못한 undeclared 라는 타입도 있다고 한다.undefined와 null은 알겠는데 undeclared는 무엇일까?그 전에 자바스크립트에는 7가지 내장 타입
자바스크립트의 데이터 타입은 크게 두가지로 분류된다.원시 타입과 참조 타입Number, String, Boolean, null, undefined, Symbol(ES6에서 추가됨)변수가 할당될 때 메모리의 고정 크기로 값을 저장하고 해당 주소를 직접 참조불변성(immu
자바스크립트에는 원시값과 참조값, 두 가지의 값의 형태가 있다.그 중에서 객체는 참조값인데, 이런 객체를 복사할 때 나타나는 차이점을 깊은 복사(Deep copy)와 얕은 복사(Shallow copy)의 차이 라고한다.그럼 깊은 복사와 얕은 복사가 각각 어떤건지 알아보
자바스크립트에서 동등함은 주로 ===를 쓴다.그런데 ==도 있다고 한다.그럼 ==와 ===의 차이는 무엇일까?우선 ==와 ===를 무엇이라고 칭하는지 알아보자.좌항과 우항 피연산자의 값으로 동등함을 비교한다.(느슨한 비교)\-> 타입이 다르더라도 값이 같으면 true
매개변수 이름 앞에 세개의 점을 붙여 정의한 매개변수함수로 전달된 인수들의 목록을 배열로 압축할때 사용된다.ex)함수에 전달된 인수들은 매개변수 및 rest parameters에 순차적으로 할당된다.ex)rest parameters는 먼저 선언된 매개변수에 할당된 인수
어떠한 외부 상태에 의존하지도, 변경하지도 않는(부수 효과가 없는) 함수동일한 인수가 전달되면 언제나 동일한 값을 반환한다.(외부 상태에도 의존하지 않고, 오직 매개 변수를 통해 함수 내부로 전달된 인수에만 의존해 반환 값을 만든다.)함수의 외부 상태를 변경하지 않는다
변수의 접근성과 생존 기간을 제어하는 유효범위이름이 충돌하는 문제를 덜어주고 자동으로 메모리를 관리한다.스크립트의 어디서든 접근이 가능하기 때문에 사용이 쉽다.타인과의 협업, 라이브러리 사용시 충돌의 가능성이 있다.지역 스코프(Local Scope)라고도 한다.함수 내