본문 바로가기

All67

[21.01.02] YDKJSY - What's the Scope? Compiled vs Interpreted 컴파일 방식과 인터프리팅 방식은 기계가 이해할 수 있는 코드로 치환한다는 점에서 대체적으로 유사하다. 하지만 모든 코드가 한번에 변형되는 컴파일 방식과는 달리, 인터프리팅 언어는 한 줄 씩 코드를 읽고 적절한 변형을 거친다. 하지만 그렇다고 JS 엔진의 작동 방식이 딱 이거다, 라고 할 수 없는 이유가 현대의 JS 엔진은 컴파일과 인터프리팅의 방식을 각 단계마다 적절히 변형하고 사용하기 때문이다. 그래서 저자는 JS를 컴파일 방식에 조금 더 가까운 언어라고 묘사하고 있다. Compiling Code 챕터의 서두에서 전에 언급한 주제를 다시 꺼낸 것은 이번에 다룰 스코프가 이 컴파일 단계와 밀접하게 관련된다는 점에 있다. 컴파일러 이론에 따르면, 컴파일로 진행되는.. 2024. 1. 7.
[20.12.28] YDKJSY - The Bigger Picture Pillar 1: Scope and Closure 스코프는 서로 중첩을 이루는데, 스코프 안에서는 변수 사용에 대한 룰이 있다. 하나의 스코프 영역에서는, 자신(스코프)의 영역에 선언한 변수와 상위 혹은 외부 스코프의 변수들에 참조할 수 있다. 하위 혹은 내부 스코프의 변수에는 참조할 수 없다. 이러한 특징을 lexical scope 라고 한다. 그리고 스코프 단위는 프로그램이 파싱 될 때 결정된다. 하지만 해당 특징을 가지는 대부분의 언어에 비해 몇 가지 다른 점이 있어서 lexical 적인 특성이 받아들여지지 않기도 하는데 그것은 다음과 같다. 호이스팅 var 키워드로 선언된 변수 : function 단위로 스코프를 가진다. 하지만 이런 점은 그저 JS 언어의 특성 상 몇가지 독특한 부분이기 때문에 .. 2024. 1. 7.
[20.12.27] YDKJSY - Digging to the Roots of JS Iteration for..of 구문 var object = /* .. */; for (const value of object) { console.log(value); } //value 1.. //value 2.. spread operator const arr = [1,2,3,4]; const arrCopy = [...arr]; console.log(arrCopy); // [1,2,3,4] console.log(arr === arrCopy); //false Iterables Iterable : 해당 값 안에 있는 원소들을 반복 순회 시킬 수 있는 값. ES6 에서 명시한 iterable 한 자료 구조 : String, Array, Map, Set etc. spread operator 를 통해 문자열을 스.. 2024. 1. 7.
[20.12.24] 객관적인 코드 리뷰를 위해 Reference johnnydev 유튜브 Why 지금까지 다양한 이유들로 프로그래밍을 하고 있지만, 내가 짠 코드에 대해 확신이 서지 않을 때가 지금도 종종 있다. 그 막연함을 글로써 정리해보면 내가 가진 문제점을 파악할 수 있을 거라는 생각에 johnnydev 님의 영상 내 정보를 내 블로그에 옮겨 보기로 했다. 정성적 vs 정량적 분석 정성적 근거 : 응답자의 주관적인 견해를 토대로 분석하는 방법 정량적 근거 : 구체적인 수치를 토대로 분석하는 방법 => 코드 리뷰는 서로를 위해 가능한 한 정량적일 필요가 있다. 정성적일 수 있는 근거 파라미터 개수 메서드 하나가 여러 동작을 수행하고 있는 것일 수 있다. 반대로 여러번 쓰이지 않을 함수임에도 불구하고 쪼개는 것에만 치중해 메서드를 나누는 것일 수 .. 2024. 1. 7.