13장 스코프
·
Book/인사이드 자바스크립트
13.1 스코프란스코프는 유효범위는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다.var var1 = 1; // 코드의 가장 바깥에서 선언한 변수if(true) { var var2 = 2; // 코드블록 내에서선언한 변수 if(true) { var var3 = 3; // 중첩된 코드블록내에서 선언한 변수 }}function foo() { var var4 = 4;// 함수내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 }}console.log(var1); //1console.log(var2); //2console.log(var3); //3console.log(var4); //ReferenceError : var ..
12장 함수
·
Book/모던 자바스크립트 Deep Dive
12.1 함수란?함수는 함수정의, 함수호출로 나눠진다.함수 정의function add(x, y) { return x + y;} 함수 호출add(2,4); // 6 12.2 함수를 사용하는 이유함수는 코드의 재사용측면에서 유용하다.만약에 코드를 수정해야될때 함수를 사용하지않는다면 중복된 횟수만큼 코드를 수정해야하기때문이다.즉 유지보수의 편의성을 높이고 코드의 신뢰성을 높이는 효과가 있다. 12.3 함수 리터럴var f = function add(x, y) { return x + y;}여기서 보면 함수를 만들어서 변수에 할당하고있다.함수리터럴도 값을 생성하기때문에, 값은 객체이다. 즉 함수는 객체이다.단 일반객체는 호출할수없지만 함수는 호출할 수 있다. 필자는 함수가 객체이다 라는게 와닿지않는다. 그냥 함..
27장 배열
·
Book/모던 자바스크립트 Deep Dive
27.1 배열이란?배열은 여러값을 순차적으로 나눈 자료구조이다.// 배열접근arr[0]arr[1]arr[2]// 배열길이arr.length // 3// 배열은 객체타입typeof arr // object 필자는 배열이라는 타입이 존재하지않아서 typeof 로 타입을 알아보면 객체타입이란걸 알수다니이번에 알게된사실이다.27.2 자바스크립트 배열은 배열이아니다.배열은 인덱스를 통해 효율적으로 접근할수있다.function searchText(array, target) { const length = array.length; for(let i = 0; i위의예제로 특정인덱스에 맞는 값을 찾으려면 차례대로 검색하기때문에 , 시간복잡도 O(n)이 커진다.또한 추가하려면 배열 요소가 추가되면 그위치 뒷자리도 모두 이..
11장 원시값과 객체의비교
·
Book/모던 자바스크립트 Deep Dive
11.1 원시값원시 타입은 변경 불가능한 값이다.불변성을 갖는 원시값을 할당한 변수는 재할당되면 새로운 공간을 확보하고,재할당한 값을 저장한후, 변수가 참조하던 메모리 공간의 주소를 변경한다.이를 불변성이라 한다.11.1.2 문자열과 불편성var str = 'Hello';str = 'World';// 변수에 재할당자바스크립트는 개발자편의를위해 원시타입인 문자열타입을 제공한다.문자열은 원시타입이며 변경 불가능하다.var str = 'string';console.log(str[0]); // sconsole.log(str.length); // 6console.log(str.toUpperCase()); // STRING// 단, 변경불가. 데이터신뢰성 보장str[0] = 'S';console.log(str);..
10장 객체리터럴
·
Book/모던 자바스크립트 Deep Dive
10.1 객체란?자바스크립트는 구성하는 모든것이 객체다.var counter = { num: 0, // 프로퍼티 increase: function() { // 메서드 this.num++; }}이처럼 객체는 프로퍼티와 메서드로 구성된 집합체이다. 10.2 객체 리터럴에 의한 객체생성객체 리터럴로, 중괄호 { } 안에 프로퍼티를 정의한다. 10.3 프로퍼티객체는 프로퍼티 집합이며, 키와 값으로 구성된다.var obj = {};obj['hello'] = 'world'; // 동적으로 생성하는 방법console.log(obj); // {hello: "world"}10.4 메서드var circle = { radius: 5, //프로퍼티 getDiameter : function () { retu..
8. 제어문
·
Book/모던 자바스크립트 Deep Dive
제어문은 조건에 실행하거나 반복실행할때 사용한다.8.1 블록문블록문은 0개이상의 문을 중괄호로 묶은것으로 코드블록이라 부른다.// 블록문 { var foo = 10;}// 제어문var x = 1;if ( x  8.2 조건문8.2-1 if…else 문var num 2;var kind;// if문if ( num > 0 ) { kind = '양수';} else if { kind = '음수';} else { kind = '영';}console.log(영); // 양수8.2-2 switch 문다양한 case에 실행할 코드블록을 결정할 때 사용한다.var month = 11;var monthName;switch( month ) { case 1: monthName = 'january'; break; case 2: ..