JavaScript/You Don't know JS

챕터 3 ) 네이티브 Native 많이 사용하는 네이티브의 종류 String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol() 🔘 네이티브는 사실 내장 함수이다. 사실 const a = new String("abc")를 typeof로 결과값을 받아보면 "object" 라고 나온다. 즉, string 타입이 아니라 object 하위 래퍼인 것이다. 🔘 instanceof 는 생성자의 프로토타입 속성이 객체의 프로토타입 체인 어딘가 존재하는지 판별한다. ➡ new String("abc")는 원시값을 감싸는 문자열 래퍼를 생성하는 샘이다. 🔸 내부 [[Class]] typeof 가 Object인 값에는 [[Clas..
챕터 2 ) 값 Value 🔸 배열 : JS에서는 문자열, 숫자, 객체, 배열까지 담을 수 있다.(배열을 담을 경우 다차원 배열이 된다) 🔸 문자열 : 문자열과 배열은 비슷하지만, 문자열을 "불변값" 이고, 배열은 "가변값" 이다. 🔘 문자열은 불변값 이므로 메서드에서의 내용변경은 새로운 문자열 생성 후 반환된다. 🔸 숫자 🔹 JS에서 유일한 숫자타입 : Number ➡ 정수, 부동 소숫점 숫자 등... (64 바이너리 사용) 🔹 숫자구문 10진수 리터럴로 표시 소숫점 앞 정수가 0이면 생략가능(0.42 ➡ .42) 소숫점 이하가 0일때도 생략 가능(42.0 ➡ 42.) 아주 크거나 작은 수는 지수형으로 표시( .toExponontial 메서드 사용 ) 숫자값은 Number 객체로 박싱할 수 있기에 Nu..
챕터 1 ) 타입 Type 🔸Javascript = 동적타입 언어 🔸Type : JS 엔진, 개발자 모두에게 값과 다른 값을 분별할 수 있는 고유한 내부 특성의 집합 🔸내장 타입 null undefined boolean number string object symbol Object를 제외한 이들은 원시 타입이다. Null은 Falsy한 유일한 원시값이며 타입은 Object이다. Function은 Object의 하위타입이며, 함수 인자의 갯수는 .length로 알 수 있다. Array 또한 Object의 하위 타입이다. 🔸 JS는 타입 강제를 하지 않는다. (number타입이였던 변수가 string으로 될 수 있다) 🔸 변수 값이 처음 할당된 값과 동일한 타입일 필요는 없다. 🔸 typeof의 반환 값은 ..
TDZ 관련 에러는 ES6 디폴트 인자 값에서도 찾아볼 수 있다. var b = 3; function foo(a = 42, b = a + b + 5){ ... } 좌변의 b는 아직 TDZ에 남아있는 b를 참조하려하기에 에러를 던지지만, 이 시점에서 인자 a는 TDZ를 밟고 간 이후여서 문제가 없다. ES6 디폴트 인자 값은 함수에 인자를 넘기지 않거나 undefined를 전달했을 때 적용된다. function foo(a = 42, b = a + 1){ console.log(a, b); } foo(); // 42 43 foo( undefined ); // 42 43 foo(5); // 5 6 foo(void 0, 7); // 42, 7 foo( null ); // null 1 a + 1 표현식에서 null..
자바스크립트에는 하위 에러 타입(TypeError, ReferenceError, SyntaxError 등)뿐만 아니라, 일부 에러는 컴파일 시점에 발생하도록 문법적으로 정의되어 있다. 자바스크립트에서는 컴파일 도중에 조기 에러로 붙잡아 던지게 되어있는, 여러가지 조건이 있다. 구문 에러( a = , 등과 같은) 는 물론, 자바스크립트 문법에는 구문상 오류는 아니지만 허용되는 것들도 정의되있다. 코드가 실행되기도 전에 발생하므로 이런 에러는 try ... catch로 잡을 수 없으며, 그저 프로그램 파싱/컴파일이 실패한다. 자바스크립트 구문상 아무 문제가 없지만 올바르지 않은 정규 표현식은 조기 에러를 던진다. var a = /+foo/; // 에러 할당 대상은 반드시 식별자여야 하므로 다음 예제에서 42..
ASI( Automatic Semicolon nsertion )는 자바 스크립트 프로그램의 세미콜론(;)이 누락된 곳에 엔진이 자동으로 ;을 삽입하는 것이다. JS는 단 하나의 ;이 없으면 동작을 하지 않기에 꼭 필요하지만 ;을 누락해도 동작하는 이유는 ASI 덕분이다. 하지만, for( ; ; )같이 ;이 필수적으로 들어가야하는 부분은 꼭 넣어줘야한다. ASI의 명세에는 에러 정정 루팅리라 기술되어 있지만구체적으로는 파서 에러이다. 파서에러는 프로그램을 부정확하게/잘못 코딩했기 때문에 나는 것일 뿐, 다른 경우는 없다. 따라서 ASI가 정정했음에도 에러가 발생하면 작성자가 짠 코드에 문제가 있다는 것이다. 이러한 정보를 바탕으로 책의 저자는 이렇게 말한다. 필요하다고 생각되는 곳이라면 어디든지 세미콜론..
58청춘
'JavaScript/You Don't know JS' 카테고리의 글 목록 (2 Page)