본문 바로가기
패스트캠퍼스/자습

자바스크립트로 하는 자료구조와 알고리즘(1,2장) - 빅오 표기법, 자바스크립트의 독특한 특징

by sunnykim91 2019. 10. 16.

빅오 표기법

 

O(1) : 입력 공간에 대해서 변하지 않음. 상수 시간이라고 부른다. ex) 배열에 인덱스 접근 시

O(n) :  ex) for문을 한번 사용하는 경우

O(n^2) : ex) for문을 중첩해서 2개 사용 하는 경우

O(n^3) : ex) for문을 중첩해서 3개 사용 하는 경우

 

빅오 표기법엔 규칙이 있다.

1) 상수를 제거한다.

 - 시간복잡도가 n+2가 나와도 n이고 5n이나와도 n으로 표기한다.

 

2) 빅오를 더한다.

 - n이 여러개 즉 for문이 (중첩말고) 3개가 있으면 n이 3개니까 3제곱이아니냐? 가 아니고 이것도 하나의 n이라고 본다.

 

3) 빅오를 곱한다.

 - 반복문이 중첩되어 있는 경우 보통 제곱이 되는 경우이다. 예를들면 for문안에 for문이 하나 있으면 n^2 이 되는것이다.

 

 

자바스크립트의 독특한 특징

자바스크립트의 변수 선언은 var, let, const로 할 수 있다. (다른언어와 같이 int, float 등이 없음)

 

var는 함수레벨 스코프만을 지원하며, let,const는 블록레벨 스코프를 지원한다.

var는 변수 호이스팅이 일어나서 변수사용이 변수 선언문보다 위에 있어도 동작을 한다. (보통 선언이되고 사용이 되어야 하는게 맞는거임)

 

자바스크립트 기본 자료형

boolean, number, string, undefined, object, function, symbol 이 있음.

 

참거짓 확인

 

falsy하다라는 값들이 존재하다. 즉 false로 평가되는 것들은 이러하다.

 - false, 0 , 빈문자열, NaN, undefined, null

 

true로 평가되는 것들

 - true, 0이 아닌 다른 숫자들

 - 비어있지 않은 문자열

 - 비어 있지 않은 객체

 

자바스크립트의 등가 비교

 ==   vs  ===

==는 값만 같은지 비교하며, 

===은 값과 타입이 같은지 비교한다.

 

 

자바스크립트에서의 객체는 자바와 다르다.

var o1 = {};
var o2 = {};

o1 == o2  // false
o1 === o2  // false

자바같은 경우는 둘이 같은것으로 본다.

하지만 자바스크립트는 메모리상의 주소가 다르기 때문에 다르다고 판단한다.

(이러한 점 때문에 ** lodash 나 underscore 와 같은 유틸리티 라이브러리를 사용한다고 한다.)

 

이 때문에 객체를 비교할떄는 == 이나 === 을 사용하지 않는다.

 

반응형