20장 strict mode
·
BOOK/모던 자바스크립트 Deep Dive
20.1 strict mode란?function foo() { x = 10;}foo();console.log(x); // ?위의 코드를 보면 foo 함수 내에서 선언하지 않은 x변수에 값 10을 할당했다.이때 x 변수를 찾아야 x값에 할당할 수 있기때문에 자바스크립트 엔진은 x 변수가 어디에 선언됬는지스코프 체인을 통해 검색하기 시작한다.foo함수의 스코프에서 x변수 선언을 검색한다. 하지만 없으므로 상위스코프로 간다.전역 스코프에도 x 변수의 선언이 존재하지 않기때문에 ReferenceError를 발생시킬것같지만 암묵적으로전역객체에 x 프로퍼티를 동적 생성한다. 이러한 형상을 암묵적 전역이라한다.암묵적 전역은 오류를 발생시키는 원인이 크기때문에 반드시 var, let, const 키워드를 사용해야한다...
[알고리즘] Linked List 이란
·
알고리즘
javascript 로 구현해보기class Node { constructor(element) { this.element = element; this.next = null; }}class LinkedList { constructor() { this.head = new Node("head"); } insert(newElement, item) { let newNode = new Node(newElement); //새로운 노드 생성 let current = this.find(item); // 삽입할 위치의 노드 찾기 newNode.next = current.next; // 찾은 노드가 가리키는 노드를 새로은 노드가 가리키기 current.next = newNode;..
[알고리즘] 배열중간삽입 - Linked List를 알기위한 사전단계
·
알고리즘
배열 순차검색 일반적으로 배열은 동일한 크기를 갖고 빈틈없이 연속적으로 이어져있다. 인덱스를 통해 단한번의 연산으로 임의의 요소에 접근할수있다. 하지만 정렬되지않는 배열에서 특정한 값을 탐색하는 경우, 모든 배열요소를 처음부터 값을 발견할때까지 차례대로 탐색해야한다. // 선형 검색을 통해 주어진 배열(array)에 주어진 값(target)이 요소로 존재하는지 확인하여// 존재하는 경우 해당 인덱스를 반환하고 존재하지 않는 경우 -1을 반환하는 함수function linearSearch(array, target) { const length = array.length; for (let i = 0; i   맨앞의 7의 숫자를 검색하는것보다. 맨뒤에있는 30을 검색한다면 7.076ms -> 7.503ms ..
[알고리즘] 피보나치 수열 - dp를 알기위한 사전단계
·
알고리즘
피보나치 수열의 유래? 피보나치 수열은 규칙을 발견한 수학자 레오나르도 피보나치의 이름을 따 부르게 되었다. 레오나르도 피보나치는 이탈리아 수학자로 이집트, 그리스, 시칠리아 등의 나라를 여행하며 아라비아에서 발전된 수학을 두루 섭렵하였다고한다. 그 많은 업적 중 피보나치수열은 12세기말 이탈리아에서 처음 제안한 것으로 "한 쌍의 토끼가 계속 새끼를 낳으면 몇 마리로 불어 날까?를 연구하다 새로운 수의 체계를 발견하였다고 한다. 한쌍의 토끼는 매일 암수 한쌍의 새끼를 낳으며 새로 태어난 토끼도 태어난지 두달 후 부턴 매달 한쌍씩 암수 새끼를 낳는다고 한다. 그러면 농장주는 1년이 지난후 모두 몇쌍의 토끼를 갖게 될까? 그 결과 피보나치는 매달 관찰되는 토끼의 양이 특정한 규칙을 따르고 있음을 발견..
49장 Babel과 Webpack이용한 환경구축
·
BOOK/모던 자바스크립트 Deep Dive
크롬, 사파리, 파이어폭스, 엣지같은 브라우저의 ES6 지원율은 약 98%로 거의 대부분의 ES6 사양을 지원한다. 브라우저마다 ES6지원율도 다르기때문에 최신사양으로 작성된 코드를 구형 브라우저에서 문제 없이 동작시키기 위한개발 환경을 구축하는 것이 필요하다. 이번장에서는 트랜스파일러인 Babel과 모듈 번들러인 Webpack을 이용하여 개발환경을 구축해보려한다.필자는 궁금했다. 리액트를 CRA로 구축해서 개발을해와서 따로 Babel과 웹팩 이런설정을 안해주어도 문제가 없는걸까?cra프로젝트 환경설정되있는 package.json 파일을보니 CRA는 webpack, babel 등을 다 포함하고 있다.편하게 바로 개발할수있는 기능을 제공하는 보일러 플레이트이다. CRA 만들시 npm 명령어를 쓰는데 npm..
17장 생성자 함수에 의한 객체생성
·
BOOK/모던 자바스크립트 Deep Dive
객체리터럴 방식으로 객체생성하는 방식 이외에도 다양한 방법으로 생성할 수 있다.이번장 에서는 생성자 함수를 사용하여 객체를 생성하는 방식을 살펴본다.17.1 Object 생성자 함수new 연산자와 함께 Object 생성자 함수를 호출하면 빈객체를 생성하여 반환한다.const person = new Object();person.name = 'Lee';person.sayHello = function () { console.log("hello my name is " + this.name);};console.log(person); // { "name": "Lee" }person.sayHello(); // hello my name is Lee생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말..