effective javascript
-
Effective JavaScript [14] - 기명 함수 표현식의 스코프Javascript 2016. 12. 8. 20:01
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - Error 객체와 디버거에서 스택 추적을 개선하기 위해 기명 함수 표현식을 사용하라.- ES3과 버그가 있는 자바스크립트 실행 환경에서 함수 표현식이 스코프를 Object.prototype으로 오염시킨다는 점을 주의하라. - 버그가 있는 자바스크립트 실행 환경에서 기명 함수 표현식의 호이스팅과 중복 할당을 주의하라.- 기명 함수 표현식의 사용을 자제하고, 배포하기 전에 제거하라.- ES5를 제대로 구현한 실행 환경에 배포한다면, 걱정할 필요가 없다. 자바스크립트 함수는 문맥에 따라 의미가 달라진다. function double(x) { return x * ..
-
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 [6] - 세미콜론 삽입의 한계에 대해서 알아두자Javascript 2016. 11. 30. 21:58
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 세미콜론은 } 앞이나 줄의 마지막 또는 프로그램의 마지막 전에만 추론되어 삽입된다. - 세미콜론은 다음 토큰이 파싱될 수 없을 때에만 추론되어 삽입된다. - 선언문이 (, [, +, -, /로 시작할 때는 절대 세미콜론을 생략하면 안된다. - 스크립트를 병행할 때, 스크립트들 사이에 명시적으로 세미콜론을 삽입하라. - return, throw, break, continue, ++, -- 바로 뒤에 새로운 행을 입력하지 마라. - for 반복문의 머리 부분(조건부)에서는 세미콜론이 구분자 또는 빈 선언문으로도 절대 추론되어 삽입되지 않는다. 자바스크립트의 편..
-
Effective JavaScript [5] - 혼합된 데이터형을 == 로 비교하지 마라Javascript 2016. 11. 30. 21:56
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - == 연산자는 인자들이 서로 다른 데이터형일 때, 일련의 혼동스러운 암묵적인 강제형변환을 적용시킨다. - 비교가 어떠한 암묵적인 강제 형변환과도 연관이 없다는 사실을 코드를 읽는 사람에게 명확하게 전달하기 위해서 ===을 사용하라. - 비교할 값이 서로 다른 데이터형이라면 프로그램의 동작을 더 명백히 하기 위해 직접 명시적인 강제 형변환을 사용하라. 다음 표현식의 값이 무엇이라 생각하는가? "1.0e0" == { valueOf: function() {return true; } }; 그냥 보기에도 연관이 없어 보이는 이 두 값은 사실 == 연산자에 의해 동등..
-
Effective JavaScript [3] - 암묵적 형변환Javascript 2016. 11. 29. 21:25
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 데이터형 에러는 암묵적인 강제 형변환에 의해 은밀하게 감춰질 수 있다. - + 연산자는 인자의 데이터형에 따라 덧셈이나 문자열 병합으로 오버로딩된다. - 객체는 valueOf를 통해 숫자형으로, toString을 통해 문자열로 강제 형변환된다. - valueOf 메서드를 가지는 객체는 반드시 valueOf에 의해 생성되는 숫자 값의 문자열 표현을 생성하는 toString 메서드를 구현해야 한다. - undefined 값을 테스트할 때 트루시니스를 사용하기보다는 typeof를 사용하거나 undefined와 비교하는 것이 좋다. 자바 스크립트 형변환 자바스크립..