Javascript
3. 언어의 기초
-
==, === 연산자
-
==, != 연산자는 비교하기 전에 형변환을 진행한다.
-
false => 0 true => 1 변환한다.
-
“5”와 5 비교한다면 문자열을 숫자로 형변환을 시도.
-
하나가 객체이고 하나다 객체가 아니면 valueOf() 호출한다.
-
null과 undefined 동일하다.
-
NaN이라면 false를 반환 항상 false를 반환한다.
-
-
====은 피연산자의 타입을 변환하지 않고 있는 그대로 비교한다.
-
==,!=은 타입 변환 때문에 자주 문제가 발생하므로 대신 ===,!==를 자주 사용하자. 데이터 타입을 관리하기 쉬워진다.
-
Switch 문
-
===로 값을 비교하므로 타입 변환은 일어나지 않는다. ex) “10”과 10은 서로 다르다.
-
-
Overloading 없음
4. 변수와 스코프, 메모리
-
ECMAScript의 변수는 원시 값과 참조 값 두가지 타입의 데이터를 저장할 수 있다.
-
원시 값 : undefined, Null, Boolean, 숫자, 문자열
-
참조 값 : Reference 공유
-
-
매개변수 전달은 값이 복사하는 것과 똑같다.
-
obj는 힙에 존재하는 전역 객체를 참조
-
함수에 값을 전달했기 때문에 함수 내부에서 매개변수의 값이 바뀌었음에도 불구하고 원래 객체에 대한 참조를 그대로 유지.
-
Execution Context(EC)
-
자바스크립트 엔진은 코드를 실행하기 위해 필요한 여러가지 정보를 관리하기 위한 객체가 Execution Context다.
-
변수
-
함수 내부에서만 접근할 수 있는 지역변수
-
this로 접근 가능한 Property
-
-
매개변수
-
함수 선언
-
Scope
-
this
-
-
Global Execution Context 생성
-
함수가 호출 될때마다 Stack의 모양으로 쌓인다.
-
함수가 종료되면 해당 함수의 EC 없어지고 이전 Context로 돌아온다.
-
Scope Chain(SC)
-
List 형태를 띄고 있다.
-
SC의 목적은 Execution Context가 접근할 수 있는 모든 변수와 함수에 순서를 정의하는 것이다.
-
Scope Chain의 앞쪽은 항상 코드가 실행되는 컨텍스트의 변수 객체이다.
-
-
Javascript에는 블록 레벨 스코프가 없다.
-
var를 사용해 선언한 변수는 자동으로 가까운 컨텍스트에 추가된다.
-
선언하지 않으면 자동으로 전역 컨텍스트에 추가된다.
-