O(1) - 알고리즘의 단계수가 1단계 필요함을 의미한다. "오1"이라고 부른다.

O(n) - 알고리즘의 단계수가 n단계 필요함을 의미한다.


'자료구조 및 알고리즘 왕기초' 카테고리의 다른 글

이진검색(binary search)  (0) 2019.01.31
정렬된 배열  (0) 2019.01.20
알고리즘이란  (0) 2019.01.20
집합  (0) 2019.01.20
알고리즘에서 효율성  (0) 2019.01.20

1 ~ 10 사이에서 임의의 숫자를 검색한다고 하면,

1. 전체값의 중간값을 pick, 목적값이 중간값보다 큰지 작은지를 판단해서 점차 목적값이 있는 범위를 줄여가며 찾는 방법.

2. 정렬된 배열(ordered array) 에서 선형 검색과 이진 검색의 방법을 비교할때, 이진검색이 훨씬 더 효율적이다. (목적을 이루는데 까지 걸리는 step의 수가 적다.)


'자료구조 및 알고리즘 왕기초' 카테고리의 다른 글

빅 오 : 단계수 계산  (0) 2019.01.31
정렬된 배열  (0) 2019.01.20
알고리즘이란  (0) 2019.01.20
집합  (0) 2019.01.20
알고리즘에서 효율성  (0) 2019.01.20

함수의 실행 결과 값을 새로운 변수에 담을때는 함수를 실행하는 기호 () 를 붙여서 할당하고,

함수 자체를 새로운 변수에 담을 때는 함수명만(기호()는 제외)을 할당한다.

function gh() {

return 5

}

var js = gh <--- gh 함수 자체를 js 변수명에 할당

var js = gh() <---gh함수 자체가 아닌 gh 함수를 실행한 "결과값" 5를 할당한다.


함수는 객체이다. 따라서 메서드와 프로퍼티를 가진다. 

모든 함수에 공통인 프로퍼티는 length 와 prototype이다.

length : 함수가 넘겨받을 것으로 예상하는 이름 붙은 매개변수의 숫자

prototype : 모든 참조 타입의 인스턴스 메서드가 존재하는 곳.

toString(), valueOf() 같은 메서드가 존재 한다.

apply(), call() 이라는 함수의 메서드가 있다. 이 둘 모두 소유자인 함수를 호출하면서 this를 넘긴다.

apply() 메서드의 경우 - 첫번째 인자로 this, 두번째 인자로 arguments 또는 Array의 인스턴스를 넘긴다.

call() 메서드는 모든 기능이 apply() 메서드와 같고, 다만 두번째 인자로 arguments 나 Array가 아닌 매개변수를 나열해야 한다.

apply(), call()의 주요 기능은 this(실행 컨텍스트)를 바꾸는 데 있다.


bind() : 새 함수 인스턴스를 만드는데, 그 this는 bind()에 전달된 값이다.



계승함수(잘 모름;)는 보통 재귀 함수로 구현 한다.

재귀 패턴(재귀 함수 )  : 함수 자신을 참조 하는 함수 또는 패턴

예) function factorial(num) {

return num * factorial(num-1)

}

위 예제에서 factorial이라는 함수는 함수 스스로를 함수 내부에서 다시 참조했다.


'개발 단어 사전' 카테고리의 다른 글

HyperText Transer Protocol(HTTP)  (1) 2019.01.31
프록시란?  (0) 2019.01.31
쿼리(query)한다?  (0) 2019.01.21
클로저란  (0) 2019.01.21
콜백 함수  (0) 2019.01.21

함수 내부에는 arguments, this 라는 특별한 객체가 있다.

arguments 객체 : 배열과 비슷한 객체, 함수에 전달된 매개변수를 모두 포함한다.

                            함수 매개 변수를 표현하는 것이 주요 목적인 객체.

      arguments 객체의 소유자인 함수를 가리키는 포인터인 callee라는 프로퍼티도 있다.

this 객체 : 함수가 실행중인 컨텍스트 객체에 대한 참조.

this의 값은 함수를 호출하는 시점에 정해진다. 따라서 해당 함수가 반환하는 값 역시 함수를 호출하는 시점에 따라 다르다.

caller 프로퍼티 : 해당 함수를 호출한 함수에 대한 참조를 저장.

전역 스코프에서 호출하면 null이 저장된다.

함수와 이름 사이의 의조성을 제거 하려면  arguments.callee.caller를 쓸 수 있다.

예) function outer() { inner() }

function inner() { alert(inner.caller)}

function innter() {alert(arguments.callee.caller)}

※ strict 모드에서는 arguments.callee, arguments.caller 의 호출은 에러를 낸다. 스트릭트 모드에서는 해당 프로프티 사용에는 좀 더 주의가 필요하다.

※ 함수 이름은 단순히 포인터를 저장한 변수일 뿐이다. 즉 함수의 내용 자체와 함수명은 별개로 생각해야 한다. 함수명은 단순히 어떤 함수 내용을 가리키는 포인터일 뿐이다.


함수 이름은 단지 변수일 뿐이므로 함수도 다른 값이 올 수 있는 곳이라면 어디든 올 수 있다.

이런 특징 덕분에 함수를 다른 함수에 매개변수로 넘기거나(콜백함수), 함수가 실행 결과로 다른 함수를 반환하는 일이 가능하다.


모든 함수는 Function 타입의 인스턴스이다.

다른 참조 타입과 마찬가지로 프로퍼티와 메서드를 가진다.

함수 역시 객체이므로 함수 이름은 단순히 함수 객체를 가리키는 포인트일 뿐이다.

※함수를 실행하지 않고 단지 함수를 가리키는 포인터(함수 이름)에 접근하기만 할 때는 괄호를 쓰면 안됨 (아래 이미지에서 var another = sum 이 예제)

위 이미지에서 sum에 null을 할당 하고나서 another에서 기존 함수가 원래대로 동작하는건 이해가 되는데.. another를 찍었을때.... 담겨있는 함수 이름이 sum으로 나오는건...... 잘 이해가 안된다.


+ Recent posts