-
언어의 원리를 이용한 자바스크립트(1) | 강희성님Javascript/ECMAScript 2009 (ES5) 2020. 2. 29. 16:22반응형
1주차 스터디 기록
# 이진수는 0.1 을 만들 수 없기 때문에 소수점을 표현할 경우 오차가 생길 가능성이 있다.
# 2 를 나누면 끝 자리는 항상 5로 끝난다.
→ 0.1 + 0.2 != 0.3 / 0.1 + 0.2 = 0.30000000000000004
# 2의 52승을 넘어가면 정밀도가 떨어져서 작은 수를 탈락시킨다.
# 데이터의 자료형을 항상 체크해라. (넘버형으로 받은 데이터는 넘버형 자료형으로 변환)
Not a Number : 자료형을 나누려고 할때
Infinity : 숫자를 0으로 나누려고 할때
# 기본 자료형 : 메모리에서 어떤 위치에 가서 얼만큼 가져오라 (크기가 고정되고 그 크기를 담고 있으면 안된다)
- 가져올 크기를 알려준다. (* 모든 변수는 자료형을 가지고 있고 변수의 역할은 메모리에서 위치를 알려준다.)
- 메모리는 숫자만 저장되기에 어떤 값인지는(어떻게 사용할지) 자료형을 결정된다.
- 자료형과 차이가 있음 (* 문자열은 기본 자료형일 수가 없다.)
# Stack : 소스를 순서대로 실행되면 쌓이는 공간 (크기가 고정되어야 한다. = 크기를 알고 있어야 한다.)
- 변수는 무조건 Stack에 쌓인다. * Stack은 값
# Heap : 크기를 모르는 객체가 쌓이는 공간. (변수가 만들어지지 않는 영역)
# 객체는 stack에 위치하고 본체(본 값)는 Heap에 있따.
# 정의 -> 선언 -> 실행
* 정의 : a 는 b다 / 선언 : a를 쓸거야 / 실행 : a를 직접 쓴다
# Undifined : 선언을 했는데 값이 없어서 자료형을 결정할 수 없을 때 *ex) var a; => undifined
# Null : 공간은 만들어져 있는 데 아무것도 들어있지 않는 상태 (≠값이 없다)
→ 참조형 객체일 때 값이 없을 경우에만 null 이 생긴다.
* 객체는 특정 위치를 가리키는 역할 : 가리키는 값이 없기 떄문에 Null
# false, 0, 빈 문자열 (""), 수가 아님을 뜻하는 NaN, null, 와 undefined은 모두 false가 됩니다.
# 호이스팅 : 함수를 만나면 변수를 처음부터 끝까지 찾아서 함수 위로 올린다.
* 선언만 올린다 / 대입X
var a = 1; (function(){ console.log(a) var a = 2; }) /////////////// 호이스팅 후 ////////////// var a = 1; (function(){ var a; console.log(a) a = 2; })
# 연산자 항이 적을수록 우선순위가 높다 (단항 > 이항 > 삼항) * ()가 제일 높은 우선순위
# 형이 다른 데이터를 더할 경우 자료형이 변한다 = 형변화
- 형변화는 자료가 손실되지 않는 쪽으로 변한다.
- 숫자형 + 문자열 = 문자열 (: 숫자형 문자열이 될 수 있지만 문자열은 숫자형이 될 수 없어서)
# if문이 깊어져도 if문의 조건은 간결하게
var name = o && o.getName(); var name = otherName || "default";
# swicth문 : 하나의 값으로 다수의 분기 처리 (loop 안에서 쓰면 안된다)
* if문 : 조건이 여러개일 경우
# 객체는 기본 자료형이 아니다.
# 리터럴 : 소스 상에서 표현된 소스 중에서 그대로 메모리에 값으로 저장되는 것 ex) size :12(숫자 리터럴)
# 배열의 효율적 사용
// 배열의 length 속성을 계속 찾기 때문에 비효율적 for (var i = 0; i < a.length; i++) { // a[i] 로 뭔가를 수행 } // 개선책 for (var i = 0, len = a.length; i < len; i++) { // a[i] 로 뭔가를 수행 }
자바스크립트에선 아래의 코드를 활용
for (var i in a) { // a[i] 으로 뭔가를 수행 }
반응형'Javascript > ECMAScript 2009 (ES5)' 카테고리의 다른 글
데이터 타입 - Javascript 핵심 개념 | 정재남 (0) 2020.03.13 언어의 원리를 이용한 자바스크립트(2) | 강희성님 (0) 2020.03.08 객체 복사하기(얕은·깊은) | ddalpange (0) 2020.02.26 참조 - 객체지향 | 생활코딩 (0) 2020.02.11 데이터 타입 - 객체지향 | 생활코딩 (0) 2020.02.11