Programming/JavaScript

var ES5까지 변수를 선언할 수 있는 유일한 방법은 var키워드를 사용하는 것이었다. var 사용 시 몇가지 주의할 점이 존재한다. - 변수 중복 선언 허용 var 키워드로 선언한 변수는 중복 선언이 가능하다. var x = 1; var y = 1; var x = 100; var y; console.log(x) // 100 console.log(y) // 1 - 함수 레벨 스코프 var 키워드로 선언한 변수는 오로지 함수 레벨 스코프를 따른다. 함수 외부에서 선안한 변수는 코드 블록 내에 선언하여도 모두 전역 변수가 된다. 따라서 의도치 않게 변수의 중복 선언이 발생할 수 있다. var x = 1; if (true) { var x = 10; // 함수 코드 블럭이 아니므로 변수의 중복 선언이 발생함 ..
무엇인지는 알겠는데 시원하게 이거다라고 단언 할 수 없는 느낌.. 제너레이터 함수는 이터러블을 생성하는 함수이다. 비동기 처리에 유용하게 사용됨 ❓ 이터러블 이터러블 프로콜을 준수한 객체, 데이터 컬렉션의 순회를 가능하게 해준다. (for ~ of 문 순회, speard 연산자) 이터러블은 key Symbol.iterator를 값으로 이터레이터를 반환하는 메서드를 소유하고 있다. ❓ 이터레이터 next 메서드를 소유하고 호출 시 이터러블을 순회하며 반환값으로 value, done 프로퍼티를 가지고 있는 객체 value - 해당 차례에 반환할 값 done - 순회 종료 여부 (boolean) 📌 제너레이터 함수의 특징 일반적인 함수와 다르게 제너레이터 함수는 함수 호출 결과를 반환하는 것이 아니라 제너레이..
원시값에 속성접근자를 사용하여 객체처럼 사용할 수 있는 이유 래퍼 객체 (wrapper object) const str = 'abcde'; console.log( str.length, str.toUpperCase(), str[0] ); str.length, str.toUpperCase(), str[0]이 실행될 때 그 순간 일시적으로 객체화 되는 것을 허용한다. str = new String('abcde') 코드가 일시적으로 생성되어 인스턴스로 만들어 기능이 실행되는 것 원시값을 객체화 시켜주는 객체형데이터 타입을 래퍼 객체라 한다. 해당 기능 사용 후에는 원시 객체로 돌아간다 (메모리 절약)
Call by value / Call by reference는 프로그래밍 언어에서 사용되는 평가 전략(Evaluation Strategy) 중 하나이다. 평가 전략(Evaluation Strategy)은 프로그래밍 언어에서 함수 호출 시 전달한 인자(argument)의 순서를 언제 결정하고 함수에 어떤 종류의 값을 통과시킬지 결정하는 것이다. 근래의 대부분의 프로그래밍 언어들은 값에 의한 호출(call-by-value)과 참조에 의한 전달(pass-by-reference)가 통합되고 있다. 출처 위키백과 - 평가 전략 (컴퓨터 프로그래밍) 💡 다루기 전에 이것들을 다루기 전에 Javascript의 데이터 타입에 대해서 알아야 한다. 기본형 (Primitive Type) Number String Boole..
자바스크립트에서 데이터 타입은 크게 2가지로 나뉘는데 기본형(원시형)과 참조형이 있다. 1. 기본형 or 원시형 (Primitive Type) 기본형 데이터가 할당된 변수는 자기 자신만의 고유한 값을 가진다. 기본형 데이터는 변경 불가능한 값으로 한 번 생성된 기본형 데이터는 변경할 수 없다. (불변성) 기본형 데이터를 할당한 변수는 재할당 이외에는 변수값을 변경할 수 없다. call-by-value (값에 의한 호출)의 형태로 전달된다. 기본형 종류 Number String Boolean null undefined Symbol (ES6 추가됨) 기본형 예시 1️⃣ 변수 생성 과정 변수 a를 선언하면 컴퓨터는 메모리 안에 데이터가 담길 공간을 확보한다. 아래의 이미지에서는 임의로 주소 1003의 공간을 ..
1. 3 중첩 스코프 스코프는 확인자 이름으로 변수를 찾기 위한 규칙의 집합이다. 그러나 대개 고려해야 할 스코프는 여러 개이다. 하나의 블록이나 함수는 다른 블록이나 함수 안에 중첩 될 수 있으므로 스코프도 다른 스코프안에 중첩 될 수 있다. 따라서 대상 변수를 현재 스코프에서 찾지못하면 엔진은 바깥의 스코프로 넘어가서 변수를 찾거나 글로벌 스코프를 참조한다. 1. 4 오류 LHS와 RHS 두 검색 방식은 변수가 아직 선언되지 않았을 때 서로 다르게 동작한다. RHS 검색이 중첩 스코프 안 어디에서도 변수를 찾지 못하면 엔진이 'ReferenceError'를 발생시킨다. RHS 검색 결과 변수를 찾았지만 그 값을 가지고 불가능한 일을 했을 때, 함수가 아닌 값을 함수처럼 실행하거나 null이나 unde..
1. 2 스코프 이해하기 엔진 : 컴파일레이션의 시작부터 끝까지 전 과정과 자바스크립트 프로그램 실행을 책임진다. 컴파일러 : 엔진의 친구, 파싱과 코드 생성의 모든 잡일을 맡는다. 스코프 : 선언된 모든 확인자 검색 목록을 작성하고 유지한다. 엄격한 규칙을 강제하여 현재 실행 코드에서 확인자의 적용방식을 정한다. 1. 2. 2앞과 뒤 "var a = 2;" 엔진은 하나의 구문을 두 개의 서로 다른 구문으로 본다. 하나는 컴파일러가 컴파일레이션 과정에서 처리할 구문이고, 다른 하나는 실행 과정에서 엔진이 처리할 구문이다. 컴파일러의 첫 번째 일은 렉싱을 통해 구문을 토큰으로 쪼갠다. 그 후 토큰을 파싱해 트리 구조로 만든다. 코드 생성 과정에 들어가면 컴파일러는 다음처럼 프로그램을 처리한다. 1. 컴파일..
특정 장소에 변수를 저장하고 나중에 그 변수를 찾는 데는 잘 정의된 규칙이 필요하다 이런 규칙을 스코프라 한다. 1. 1 컴파일러 이론 자바스크립트는 일반적으로 '동적' 또는 '인터프리터'언어로 분류하지만 실제로 '컴파일러 언어'다. 컴파일러 언어의 처리 과정에서는 프로그램을 이루는 소스 코드가 실행되기 전에 3단계를 거치는데 이것을 컴파일레이션이라고 한다. 토크나이징 / 렉싱 문자열을 나누어 토큰이라 불리는 의미 있는 조각으로 만드는 과정이다. 빈칸은 의미유무에 따라 토큰일수도 아닐수도 있다. var a = 2 ( var, a, =, 2, ; ) 파싱 토큰 배열을 프로그램의 문법 구조를 반영하여 중접 원소를 갖는 트리 형태로 바꾸는 과정이다. 파싱의 결과로 만들어진 트리를 AST Abstract Syn..
한우콩
'Programming/JavaScript' 카테고리의 글 목록