여기까지 읽어보니 개발하면서 필요한 부분을 찾아보기에 좋은 기본서라는 생각이 든다.
정리하기엔 방대하고 또 다른 하는 일이 많아서... 계속 인상 깊은 부분만 기록해본다.
1. 자바스크립트의 산술 연산은 오버플로우와 언더플로우, 0으로 나누는 에러를 발생시키지 않는다. 대신 (±)Infinity라고 표현하는 무한대의 값을 출력한다.
2. 엄격한 동치연산자 ===이 존재한다. (null과 undefined를 구별하고 싶다면 이를 사용할 것)
3. 함수 유효범위와 끌어올림(hoisting) - 책 66~67쪽
- 자바스크립트에는 블록 유효 범위(block scope)라는 개념이 없다. 대신 함수 유효범위(function scope)를 사용한다.
- 이 함수 유효 범위는, 어떤 함수 안에서 선언된 모든 변수는 그 함수 전체에 걸쳐 유효하다는 뜻이다. 이는 변수가 미처 선언되기도 전에 유효하다는 뜻이기도 하다. 이런 자바스크립트의 특징은 비공식적으로 끌어올림(hoisting)이라고 알려져 있다.
var scope = "global";
function f() {
console.log(scope); // undefined 출력 (함수 유효 범위 때문이다.)
var scope = "local";
console.log(scope); // local 출력
}
- 지역 변수는 함수 전체에 걸쳐서 정의된다. 즉, 같은 이름의 전역 변수는 함수 전체에서 이 지역 변수에 의해 감춰진다.
- 지역 변수가 함수 전체에 걸쳐 정의되었더라도 var문이 실행되고 나서야 실제로 초기화된다. 그래서...
function f() {
var scope; // 이렇게 변수 선언이 함수 꼭대기로 끌어올려(hoisted)진다.
console.log(scope); // undefined. 아무것도 할당되지 않았다.
scope = "local";
console.log(scope); // local 출력
}
이렇게 됨
언어가 정말... 느슨하다;
그리고 비교 대상이 자바뿐이라 뭔가 이상함... 그냥 다르다고 받아들여야겠지만...ㅎㅅㅎ;
'독서 > 자바스크립트 완벽 가이드' 카테고리의 다른 글
1부 2장 - 어휘 구조 (0) | 2020.12.31 |
---|
댓글