Javascript
-
Javascript null, undefined, NaNJavascript 2016. 11. 30. 22:21
다른 언어들을 공부하다가 자바스크립트를 공부하다가 의문에 빠지게 하는 null, undefined, NaN 보통 다른 언어들의 경우 null만을 제공하는데 비슷한듯 비슷하지 않은 세가지의 타입을 제공해 다소 이해가 어려운 부분이 있어 포스팅을 통해 정리하고자 한다. - 변수의 타입을 선언하고 값을 할당하지 않은 변수에 접근하면 undefined 를 반환한다. - 변수에 null을 할당한 경우, 값자체가 없다는 의미가 아니라 어떠한 유효한 값도 아니라는 뜻으로 선언만 하고 값을 할당하지 않은 경우(undefined)와 다르다. - 객체에 선언된 프로퍼티와 선언되지 않은 프로퍼티에 접근하는 경우 모두 undefined를 반환한다. - null 과 undefined는 Boolean 문맥에서 모두 false로 ..
-
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 [4] - 객체 래퍼보다 원시 데이터형을 우선시하라Javascript 2016. 11. 29. 22:05
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 원시 데이터형을 위한 객체 래퍼는 그 자신의 원시 데이터 값과는 동작이 다르다. 동일한지 비교했을 때도 서로 다르다. - 원시 데이터형에 프로퍼티를 설정하거나 가져오면 암묵적으로 객체 래퍼를 생성한다. 객체와 함께, 자바스크립트는 다섯 가지의 원시 데이터형 값을 가진다. 불리언, 숫자, 문자열, null 그리고 undefined다. 동시에, 표준 라이브러리는 불리언, 숫자 그리고 문자열을 객체 처럼 래핑하는 생성자를 제공한다. 다음과 같이 문자열 값을 감싸서 String 객체를 만들 수 있다. var s = new String("hello"); 어떤 면에서..
-
Effective JavaScript [3] - 암묵적 형변환Javascript 2016. 11. 29. 21:25
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 데이터형 에러는 암묵적인 강제 형변환에 의해 은밀하게 감춰질 수 있다. - + 연산자는 인자의 데이터형에 따라 덧셈이나 문자열 병합으로 오버로딩된다. - 객체는 valueOf를 통해 숫자형으로, toString을 통해 문자열로 강제 형변환된다. - valueOf 메서드를 가지는 객체는 반드시 valueOf에 의해 생성되는 숫자 값의 문자열 표현을 생성하는 toString 메서드를 구현해야 한다. - undefined 값을 테스트할 때 트루시니스를 사용하기보다는 typeof를 사용하거나 undefined와 비교하는 것이 좋다. 자바 스크립트 형변환 자바스크립..
-
부동소수점Javascript 2016. 11. 29. 21:09
자바스크립트의 숫자 자료형의 부동소수점 이슈에 관한 내용을 보게 되었다. 사실 오차가 발생한다더라 정도에서 왜? 에 대한 질문에 항상 답을 찾아보지 않고 넘어가곤 했다. 이 포스팅을 통해 부동소수점이 무엇이고 오차가 발생하는 이유가 무엇인지 정리하고자 한다. 부동소수점이란 부동소수점 또는 떠돌이 소수점 방식은 실수를 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수롤 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 포현한다. 컴퓨터에서는 고정 소수점 방식보다 넓은 범위의 수를 나타낼 수 있어 과학기술 계산에 많이 이용되지만 근사값으로 표현되며 고정 소수점 방식보다 연산속도가 느리기 때문에 별도의 전용 연산장치를 두는 경우가 많다. 고정 소수점과 달리 정..
-
Effective JavaScript [2] - 숫자형 타입Javascript 2016. 11. 28. 22:23
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. 주요내용. - 자바스크립트의 숫자는 double-정확도의 부동 소수점 숫자다. - 자바스크립트의 정수는 별개의 데이터형이 아니라 double의 부분집합이다. - 비트단위 연산자는 숫자를 32비트의 부호과 있는 integer처럼 처리한다. - 부동 소수점 산술 연산의 정확도가 한계가 있음을 주의해야 한다. 자바스크립트의 부동 소수점 숫자 이해하기 자바스크립트에는 숫자형 데이터가 단 하나밖에 없다. typeof 연산자의 동작을 통해 자바스크립트가 정수형이나 부동 소수점 숫자를 단순히 숫자형으로 분류한다는 사실을 확인해 볼 수 있다. typeof 17; // "nu..
-
Effective JavaScript [1] - ECMAScript, ES5, "use strict"Javascript 2016. 11. 28. 21:57
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. 어떤 자바스크립트를 사용하고 있는지 알아야 한다. 자바스크립트는 오랜 시간에 걸쳐 진화 됬다. 원래는 자바의 보충재로써 자리잡으려 했으나, 지금은 자바를 밀어내고 웹에서 지배적인 프로그램 언어가 되었다. 1997년 ECMAScript라는 이름으로 전세계적인 표준이 공식화 되었다. 현재는 ESMAScript 표준을 지키는 여러 자바스크립트 구현체들이 서로 경쟁하고 있다. 1999년에 완성된 표준은 현재까지 가장 폭넓게 지원되고 있는 자바스크립트다. 포스팅 하는 내용의 전반에 걸쳐 ES5(ECMAScript 중 5번째로 구현된 표준)에 적용되는 특정 항목이나 주의..