JavaScript/Javascript

var, let, const 모두 변수를 선언하는 키워드이다. let과 const는 ES2015(ES6)에서 등장했으며 여러가지 다른 특성을 갖는다. var let const 유효 범위(스코프 범위) Function Scope Block Scope Block Scope 재할당 가능 가능 불가능 재선언 가능 불가능 불가능 1. 스코프 규칙 스코프에 관한 글 var는 함수 스코프를 갖는다. 하지만, let과 const는 블록 스코프를 갖는다. 1-1 var var 키워드는 함수 스코프(Function Scope)이다. 이는 생성된 함수 스코프 내에서만 사용할 수 있으며, 외부에 선언된 경우는 전역 범위를 갖는다. var age = 24; function foo () { var name = "JuHyeon" ..
네이티브 객체 (Native Object) ECMAScript(자바스크립트 언어 규약) 명세에서 의미론적인 부분으로 완전히 정의해 놓은 객체들이다. 네이티브 객체는 애플리케이션의 환경과 관계없이 언제나 사용할 수 있다. 값 속성 : NaN, Null, undefined, globalThis 함수 속성 : eval(), parseInt(), isNaN() ➡ 객체에 붙지 않고 전역으로 호출하는 함수 기초 객체(fundamental obj) : Object, Boolean, Function, Symbol ➡ 모든 객체의 기본 객체 오류 객체 : Error, SyntaxError 숫자/날짜 객체 : Number, Math, Date 텍스트 처리 객체 : String, RegExp 인덱스 콜렉션 : 인덱스값으로..
클로저란? 클로저는 함수가 속한 렉시컬 환경을 기억해서 함수가 렉스컬 스코프 밖에서 실행될 때에도 함수가 속한 스코프에 접근할 수 있게 하는 기능을 말한다. function foo() { var a = 2; function bar(){ console.log(a); // 2 } return bar; } var func = foo(); func(); GC(Garbage Collector)가 foo()의 참조를 없앨 것 같지만, bar()가 해당 스코프에 있는 a를 참조하기 때문에 없애지 않는다. 그러므로 스코프 외부에서 bar()가 실행되면 스코프를 기억하고 있기에 2가 출력된다. 이때, 클로저는 bar()에서 발생하며, 이는 스코프 외부에서 foo()의 스코프안에 있는 bar()를 참조하기 때문이다. 다시..
this 바인딩 EC(Execution Context) 가 생성될 때마다 this 바인딩이 발생하며, 우선순위 순으로 나열하면 아래와 같다. this 바인딩 되는 순서 1. new를 사용했을 때 해당 객체로 바인딩된다. var name = "global"; function Func() { this.name = "Func"; this.print = function f() { console.log(this.name); }; } var a = new Func(); a.print(); // Func 2. call, apply, bind 와 같이 명시적 바인딩을 사용한 경우 인자로 전달된 객체에 바인딩 된다. function func() { console.log(this.name); } var obj = { na..
호이스팅 이 개념은 선수지식으로 스코프를 알고 있어야 된다. 호이스팅이란? "끌어올린다" 라는 뜻으로 변수 및 함수 선언문이 스코프 내의 최상단으로 끌어욜려지는 현상을 말한다. 즉, 선언문이 어디에서 선언됐든 속하는 스코프 전체에서 존재하는 것처럼 취급되는 작용을 말한다. 주의할 점은 "선언문" 이며, "대입문"은 끌어올려지지 않는다. console.log(a); var a = 2; 컴파일러는 JS엔진이 *인터프리팅(Interpreting)을 하기 전에 컴파일을 하는데 이때, var a = 2; 를 2개의 구문으로 본다. * = 인터프리팅은 기계어를 기계어를 다른 언어로 번역할 필요 없이 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경 var a a = 2 var a 는 변수 선언..
정의 스코프란 자바스크립트 엔진이 참조의 대상이 되는 식별자(Identifier)를 검색할 때 사용하는 규칙의 집합이다. 즉, 어떤 변수를 사용하거나 함수를 호출하려고 할 때 식별자로 사용하는데, 그 식별자를 검색하는 매커니즘이라 생각하면 된다. 렉시컬 스코프 (정리글) 프로그래머가 코드를 짤 때, 변수 및 함수/블록 스코프를 어디에 작성하였는가에 따라 정해지는 스코프를 렉시컬 스코프라 한다. "렉시컬(Lexical)"이라는 명칭이 붙은 이유는 자바스크립트 컴파일러가 소스코드를 토큰(Token)으로 쪼개서 의미를 부여하는 렉싱(Lexing) 단계에 해당 스코프가 확정되기 때문이다.(렉싱 타임에 정의되는 스코프) 즉, 변수 혹은 함수/블록이 어디에 써있는가를 보고 그 스코프를 판단하면 된다. 스코프 체인 ..
58청춘
'JavaScript/Javascript' 카테고리의 글 목록 (2 Page)