본문 바로가기

Languages

(22)
[JavaScript 101] 자바스크립트 스코프 본 글은 '모던 자바스크립트 Deep Dive' 를 참고하여 작성된 글입니다. 함수 정의 - 스코프는 식별자가 유효한 범위를 말한다. - 이름이 같은 변수 중에 어떤 변수를 참조해야 할지 결정하는 것을 식별자 결정 (identifier resolution)이라 한다. - 코드는 전역(global)과 지역(local)로 구분됨. - 스코프가 함수 중첨에 의해 계층적으로 연결된 것을 스코프 체인이라 한다. - 상위 스코프에서 유효한 변수를 하위 스코프에서는 자유롭게 참조할 수 있지만 그 반대는 안됨. 전역 변수 - 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. - 호이스팅은 스코프를 단위로 동작한다. - var 키워드로 선언한 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치한다. - 변수의 ..
[JavaScript 101] 자바스크립트 함수 본 글은 '모던 자바스크립트 Deep Dive' 를 참고하여 작성된 글입니다. 함수 정의 // 함수 선언문 function add(x, y) { return x + y; } // 함수 표현식 var add = function (x, y) { return x + y; }; // 생성자 함수 var add = new Function('x', 'y', 'return x + y'); // 화살표 함수 var add = (x, y) => x + y; 자바스크립트 함수의 특징 - 자바스크립트에서 함수는 일급 객체다. (함수를 값처럼 자유롭게 사용할 수 있다.) - 함수 호이스팅(function hoisting)으로 인해 런타임 이전에 선언부가 먼저 처리된다. - 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 ..
[JavaScript 101] 자바스크립트 객체 본 글은 '모던 자바스크립트 Deep Dive' 를 참고하여 작성된 글입니다. 객체 - 객체는 변경 불가능한(immutable)한 원시 값과 다르게 변경 가능한 값(mutable value) 이다. - 객체는 0개 이상의 프로퍼티로 구성된 집합이며 프로퍼티는 key와 value로 구성된다. - 프로퍼티의 값이 함수일 경우 method라고 부른다. - 프로퍼티 키가 식별자 네이밍 규칙을 따르지 않을 경우 따옴표를 사용해야 한다. - 프로퍼티 키에 문자열이나 심벌 값 외의 값을 사용하면 암무적 타입 변환을 통해 문자열이 된다. - 객체에 존재하지 않는 프로퍼티에 접근하면 ReferenceError를 발생시키지 않고 undefeined를 반환한다. - delete 키워드를 통해 프로퍼티를 삭제할 수 있다. E..
[JavaScript 101] 자바스크립트 기본 문법 본 글은 '모던 자바스크립트 Deep Dive' 를 참고하여 작성된 글입니다. 변수 호이스팅 (hoisting) - 변수 선언이 마치 코드의 처음 부분에 끌어 올려진 것처럼 동작하는 자바스크립트의 특징을 변수 호이스팅 (variable hoisting)이라고 함. - 런타임 이전에 소스코드의 평가 과정을 거치면서 모든 선언문(변수, 함수 등..) 을 먼저 실행함. - 즉, 아래와 같이 코드를 작성해도 Reference Error가 발생하지 않고 undefined가 잘 출력됨. console.log(result); var result; - 하지만 값의 할당은 런타임에 실행됨 - 고로, 아래의 코드 역시 undefined가 출력됨 console.log(result); var result = 100; var ..
[JavaScript 101] 자바스크립트 배경지식 본 글은 '모던 자바스크립트 Deep Dive' 를 참고하여 작성된 글입니다. ECMAScript - 크로스 브라우징 이슈 : 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 문제 - ECMAScript는 크로스 브라우징 이슈를 해결하기 위한 표준 사양 - ES1, ES2 등의 버전들이 있음. (2022년 6월 13버전 출시) - 참조 (https://www.ecma-international.org/publications-and-standards/standards/ecma-262/) 자바스크립트와 ECMAScript - 각 브라우저 제조사는 ECMAScript 사양을 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현한다. - 자바스크립트는 일반적으로 ECMAScript와 브라우저가 별도 지원하는 ..
[파이썬 101] string 외장 및 내장 모듈 (문자열) 문자열 상수 (외장 string 라이브러리) 상수 (string.constant) 설명 예시 ascii_letters ascii_lowercase + ascii_uppercase 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ascii_lowercase 영어 소문자 "abcdefghijklmnopqrstuvwxyz" ascii_uppercase 영어 대문자 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" digits 10진법 digits "0123456789" hexdigits 16진법 digits "0123456789ABCDEF" octdigits 8진법 digits "01234567" punctuation 특수기호 "!"#$%&'()*+,-./:..
[파이썬 라이브러리] itertools 모듈의 함수들 함수 정리 함수 파라미터 설명 accumulate iterable[, func, *, initial=None] - 누적 합계를 반환하는 이터레이터를 반환 - func에 합계 대신 다른 함수를 넣을 수 있음 chain *iterables - 여러 iterable을 연달아 반환 chain.from_iterable iterable - iterable을 여러개 받는 대신, iterable의 요소를 iterable로 combinations iterable, r - 조합 - 튜플 형태로 반환 combinations_with_replacement iterable, r - 중복조합 - 튜플 형태로 반환 compress data, selectors - selectors가 true인 인덱스의 data만 반환 - 둘다 it..
[파이썬 라이브러리] heapq 힙 큐 (heap queue) - 힙큐(heap queue) = 우선순위 큐 (priority queue) - heapq에서는 요소를 0부터 세서, heap[k]의 left-child는 heap[2*k+1], right-child는 heap[2*k+2]이다. >>> 1부터 만들면 편하지만, 파이썬은 0부터 - heapq의 heap은 기본적으로 최소힙(min heap) - 기본적으로 list를 사용함 heaq 함수 함수 파라미터 설명 heappush heap, item item을 heap으로 푸시 heappop heap pop 하고 반환. 빈 힙이면 IndexError heappushpop heap, item item을 push하고 가장 작은 항목을 pop (함수 두개 보다 효율적) heapify x 리스..
[파이썬 101] all과 any all(iterable) def all(iterable): for element in iterable: if not element: return False return True print(all([1, 2, 3, 4, 5])) print(all([1, True])) print(all([1, True, 0])) print(all([1, True, False])) print(all(range(10))) print(all(range(1, 10))) print(all([])) - 모든 요소가 참이면 True 반환. (하나라도 False면 False) - 비어 있으면 True (즉, False를 찾았을 때만 False 인듯) any(iterable) def any(iterable): for element in i..
[파이썬 101] List, Set, Dictionary 연산과 메서드의 시간복잡도 List 연산/메서드 의 시간복잡도 연산 / 메서드 예시 복잡도 비고 Index list[i] O(1) Store list[i] = value O(1) Length len(list) O(1) Append list.append(value) O(1) Pop list.pop() O(1) list.pop(-1) Clear list.clear() O(1) list = list(), list= [] Slice list[a:b] O(b-a) slicing 되는 개수에 비례 : O(N) Extend list.extend(other_list) O(len(...)) other_list의 크기에 비례 : O(N) Construction list() O(len(...)) 초기화되는 크기에 비례 : O(N) Equality l..

반응형