Language76 [JavaScript] 함수 호출 방식에 달라지는 this 자바스크립트의 함수는 호출될 때, 매개변수로 전달되는 인자값, Scope Chain 이외에, arguements 객체와 this를 암묵적으로 전달 받습니다. this 키워드는 static 하지 않고 함수를 호출하는 방식에 의해 결정되는 특징을 가지고 있습니다. this 키워드는 4가지 함수 호출 방식으로 달라지게 됩니다. 1. 메서드 방식 첫번째 함수 호출 방식으로는 객체 내부에서 호출되는 메서드가 있습니다. 위의 예시에서는 calcAge 함수는 jonas 안에 들어있는 메서드인데 여기서의 this는 jonas를 가르키게 됩니다. 2. Simple function call strict 모드에서의 단순 함수 호출은 undefined을 나타내고, 브라우저에서는 window 객체를 가르킵니다. console... 2021. 1. 12. [JavaScript] 호이스팅(Hoisting) Hoisting 호이스팅(Hoisting)이란, var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 변수의 몇 개의 타입들이 선언문이 나오기 전에, 사용할 수 있는 특성을 말합니다. 실행이 시작하기 전에, 코드는 변수 선언문들을 scan하고 코드에서 찾은 변수에 대해, 변수 환경 object에 새로운 속성이 생성됩니다. 함수 선언은 변수 환경 객체에 저장되기 때문에 실제로 코드에서 선언되기 전에 사용할 수 있습니다. var 키워드도 마찬가지로 호이스팅이 가능한데 선언된 값을 얻지 못하지만 undefined로 정의 됩니다. 하지만 var 키워드로 선언된 변수와는 달리 let과 const 키워드로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError)가 발생.. 2021. 1. 12. [JavaScript] Scope의 개념과 함수,블록 레벨 스코프 Scope의 개념 Scoping: 프로그램의 변수를 구성하고 액세스하는 방법 Lexical Scoping: 코드의 함수 및 블록 배치에 의해 제어됩니다. Scope: 특정 변수가 선언된 공간 또는 환경입니다. Scope에는 3가지 종류가 있습니다 전역 스코프(Global scope) 함수 레벨 스코프(Function-level scope) 블록 레벨 스코프(Block-level scope) 대부분의 프로그래밍 언어는 블록 레벨 스코프(Block-level scope)를 따르지만 자바스크립트는 함수 레벨 스코프(Function-level scope)를 따릅니다. 함수 레벨 스코프(Function-level scope) 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없습니다. .. 2021. 1. 12. [JavaScript] Execution context and the call stack compiling이 끝났을 때, 코드가 실행되었을 때, global execution context가 제일 먼저 실행됩니다. top level code는 함수를 밖에 있는 코드를 실행합니다. 함수는 개발자들이 호출했을 때만 실행합니다. 실행 context은 추상적인 개념입니다. 실행 context는 기본적인 환경이라고 정의하고 필요한 함수에 전달 된 지역 변수 또는 인수와 같은 모든 정보를 저장합니다. global context는 하나 뿐이며, 항상 기본 context로 존재하고, 최상위 코드가 실행되는 곳입니다. 만들어진 실행 global execution context를 실행합니다. 이과정에서는 CPU processing이나 기계어를 받습니다. top level code 실행이 끝나면 함수가 실행되고.. 2021. 1. 11. 이전 1 ··· 4 5 6 7 8 9 10 ··· 19 다음