전체 글67 [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. [20.12.24] YDKJSY - Surveying JS Each File is a Program 요즘에는 거의 모든 웹 사이트가 수많은 JS file 로 이루어져 있다. 하나의 거대한 프로그램은 서로 다른 작은 프로그램들이 모여 만들어진 집합체일 뿐, 초기의 js 파일은 각각 '모듈'이라는 단위로 작은 프로그램에 대한 기능을 하나씩 맡고 있는데, 그러한 이유는 주로 빠른 에러 핸들링을 통한 유지 보수의 용이함에 있으며 작은 프로그램을 큰 프로그램으로 합치기 위해서 별도의 빌드 툴을 사용한다고 한다. 다수의 js 파일들이 하나의 프로그램처럼 동작하기 위해서는 전역 단계에서 state 를 공유를 할 수 있어야 하는데, 이를 구현하기 위한 방법은 여러가지가 있다. 그 중의 하나로 따로 state 클래스를 만들어 각각의 모듈에서 담당하는 이벤트 핸들러나 데이터의 변.. 2024. 1. 7. [20.12.23] YDKJSY - What is JavaScript? What's With That Name? 자바 스크립트는 자바와는 관련없이, 순전히 마케팅 전략으로 출시된 이름이다. 기존의 무겁고 상대적으로 더 잘 알려진 자바의 대항마 포지션을 획득하기 위해 '자바'라는 이름에 더 가벼운 프로그램이라는 의미로 '스크립트' 라는 단어를 합쳐 만들어졌다고 한다. 한마디로 자바와 자바 스크립트는 기능적인 측면에서 전혀 다른 결을 띄고 있는 언어들이다. 요즘에는 그냥 JS 혹은 ECMA 표준의 전신이라는 의미에서 ECMAScript 라고 불리는 추세이다. Backwards & Forwards backwards / forwards compatible 에 대해 알아볼 필요가 있다. backwards compatible : 과거에 작성해둔 기능 코드가 현재 브라우저 상에서도 호환.. 2024. 1. 6. 이전 1 ··· 6 7 8 9 10 11 12 다음