Javascript
-
Effective JavaScript [12] - 변수 호이스팅Javascript 2016. 12. 6. 23:55
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 블록 내에서의 변수 선언은 암묵적으로 그 변수를 포함하는 함수의 맨 윗부분으로 호이스팅된다. - 변수의 재선언은 하나의 변수처럼 처리된다. - 혼란을 막기 위해 지역 변수 선언을 직접 호이스팅하는 것을 고려하라. 자바스크립트는 어휘적 스코프를 지원하지만, 블록 단위 스코프를 지원하지 않는다. 변수 정의는 자신을 포함한 함수에 의해 지정된다. function isWinner(player, others) { var highest = 0; for (var i = 0, n = others.length; i < n; i++ ) { var player = others..
-
Effective JavaScript [11] - 클로저에 익숙해져라Javascript 2016. 12. 5. 22:59
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 함수는 외부 스코프에 선언된 변수를 참조할 수 있다. - 클로저는 자신을 생성한 함수보다 더 오래 지속된다. - 클로저는 내부적으로 외부 변수에 대한 참조를 저장하고, 저장된 변수를 읽고 갱신할 수 있다. 클로저(closure)를 지원하지 않은 언어를 사용하던 프로그래머에게는 친근하지 않을 개념일 수 있다. 클로저를 이해하는 데는 세가지의 기본적인 사실만 배우면 된다. 첫 번째로는 자바스크립트는 현재 함수 외부에서 선언된 변수를 참조할 수 있다. function makeSandwich() { var magicIngredient = "peanut butter..
-
Effective JavaScript [10] - with를 사용하지 마라!Javascript 2016. 12. 5. 19:57
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - with 선언문을 사용하지 마라. - 객체로의 반복되는 접근을 위해 짧은 변수 이름을 사용하라 - with 선언문으로 암묵적으로 바인딩하는 대신에 명시적으로 지역 변수를 객체 프로퍼티에 바인딩하라. with를 사용하지 마라 (46p) with는 하나의 객체에서 여러 메서드를 호출할 때 해당 객체에 대함 참조를 반복할 필요가 없는 경우 사용이 편리하다. function status(info) { var widget = new Widget(); with (widget) { setBackground("blue"); setforeground("white"); se..
-
Effective JavaScript [9] - 항상 지역 변수를 선언하라Javascript 2016. 12. 2. 00:05
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 새로운 지역 변수는 항상 var를 사용해서 선언하라. - 바인딩 되지 않은 변수를 확인하는데 도움을 주는 lint 도구의 사용을 고려해 보라. 프로그램에서 바인딩되지 않은 변수를 할당하면, 오류를 발생하는 대신에 단순히 새로운 전역 변수를 만들고, 이 변수를 새로운 전역 변수에 할당한다. 이는 지역 변수 선언을 깜빡 잊으면 아무말 없이 전역 변수로 변한다는 뜻이다. function swap (a, i, j) { temp = a[i]; // 전역변수 a[i] = a[j]; a[j] = temp; } temp 변수에 var 선언이 빠져서 전역 변수가 만들어졌지..
-
Effective JavaScript [8] - 전역객체의 사용을 최소화하라Javascript 2016. 12. 2. 00:04
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 전역 변수를 선언하지 마라 - 가능하면 변수를 지역적으로 선언하라 - 전역 객체에 프로퍼터를 추가하지 마라. - 플랫폼의 기능 탐지를 위해 전역 객체를 사용하라. 자바스크립트에서 전역 변수를 정의하는 것은 모든 사람이 공유하는 공통의 네임스페이스를 더럽히고 뜻하지 않게 이름을 충돌할 만한 가능성을 만든다. 실제로 전역 네임스페이스는 자바스크립트 프로그램의 구분된 요소들이 상호작용할 수 있는 유일한 방법이기 때문에, 전역 변수의 사용은 불가피하다. 라이브러리나 컴포넌트 에서 전역 변수 이름을 정의하는 경우가 아니라면 가능한 모든 변수를 지역변수로 유지하는 게..
-
Effective JavaScript [7] -문자열을 16비트 코드 단위의 시퀀스로 간주하라Javascript 2016. 12. 2. 00:02
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 자바스크립트 문자열은 유니코드 코드 포인트가 아니라 16비트 코드 유닛으로 구성된다. - 자바스크립트에서 유니 코드 포인트 2^16 이상은 대리 쌍이라고 알려진 두 개의 코드 유닛으로 표현된다. - 대리 쌍은 문자열 요소의 개수를 반환하고, length, charAt, charCodeAt, 메서드와 "." 같은 정규식 패턴에 영향을 미친다. - 코드 포인트를 다루는 문자열 조작을 하기 위해서는 서드파티 라이브러리를 사용하라 - 문자열을 처리하는 라이브러리를 사용할 때 코드 포인트의 전체 범위를 어떻게 처리하는지 해당 라이브러리의 문서를 찾아보아야 한다. 이..
-
Javascript ScopeJavascript 2016. 12. 1. 12:10
유효범위(Scope)는 변수의 수명을 의미한다. 아래의 예제를 보자. 결과는 global이다. var vscope = 'global'; function fscope() { alert(vscope); } 함수 밖에서 변수를 선언하면 그 변수는 전역변수가 된다. 전역변수는 애플리케이션 전역에서 접근이 가능한 변수다. 다시 말해서 어떤 함수 안에서도 그 변수에 접근할 수 있다. 그렇기 때문에 함수 fscope 내에서 vscope 를 호출 했을 때 함수 밖에서 선언된 vscope 의 값 global이 반환된 것이다. 아래의 예제는 함수 안 local과 함수 밖 global 이 출력된다. var vscope = 'global'; function fscope() { var vscope = 'local'; alert..
-
Primitive Type(원시 타입) vs Reference Type (참조 타입)Javascript 2016. 11. 30. 23:53
자바스크립트의 뼈대가 되는 원시 타입(Primitive Type)과 참조 타입(Reference Type)에 대해 정리해보고자 한다. 원시 타입과 참조 타입 자바스크립트는 원시 타입(Primitive Type)과 참조 타입(ReferenceType)이라는 두가지 자료형을 제공한다. 원시 타입은 숫자(Number), 불린(Boolean), null, undefined, 문자열(String) 5가지가 존재한다. 참조 타입은 객체(Object), 배열(Array), 함수(function)가 있다. 원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터의 값을 보관한다. 원시 타입 자료형은 모두 변수 선언, 초기화, 할당시 값이 저장된 메모리 영역에 직접적으로 접근한다..