주요 개념 싱글 쓰레드(Single Thread) 비동기(Asynchronous) JavaScript는 싱글 쓰레드(Single Thread) 언어이다. 한 번에 하나의 작업만 수행이 가능하다는 의미로 받아들일 수 있다. 하지만 우리가 사용하는 웹 페이지에는 여러 컴포넌트들과 기능들이 동시다발적으로 수행되고 있다. 이는 JavaScript는 메인 쓰레드인 이벤트 루프가 싱글 쓰레드이기 때문에 이렇게 불리지만 결국 실행한 후(런타임)에는 NodeJS와 같은 멀티 쓰레드 환경에서 구동되므로 동시다발적으로 여러 동작이 가능하다. 기존의 동기식 요청은 인터프리터 언어이므로 위에서 차례대로 수행된다. 앞에서 연산이 오래 걸리는 작업을 수행하고 뒤에 금방 끝날 수 있는 연산을 계속 미루게 되면 리소스의 낭비가 있어..
주요 개념 원시 타입(Primitive Type) 참조 타입(Reference Type) 깊은 복사(Deep copy) 얕은 복사(Shallow copy) JS에는 원시 타입(Primitive Type)과 참조 타입(Reference Type)이 있다. 1. 원시값 Number String Boolean Null Undefined 2. 객체(참조)값 Object Symbol 원시 타입인 숫자, 문자열, 논리형, 널, 언디파인드 다섯 가지를 제외한 모든 값은 객체(참조) 타입이다. 참조 타입이라고 불리는 이유는 객체의 모든 연산이 실제 값이 아닌 참조값으로 처리되기 때문이다. 이름에서 알 수 있든 원시 타입은 값 자체를 복사하여 사용한다. 그렇기 때문에 어떠한 변수를 복사하고 나서 원본에 해당하는 변수를 ..
주요 개념라이브러리(library)패키지(package)모듈(module)함수(function)메소드(method) 비단 파이썬에서만 사용되는 용어는 아니지만 가끔 혼동해서 말하는 경우가 있어 정리해 둘 필요가 있을 것 같다. 먼저 라이브러리(library)는 여러 패키지와 모듈들을 모아놓은 것을 의미한다. 패키지(package)는 특정 기능과 관련된 여러 모듈을 한 폴더 안에 넣어 관리하는데 이를 패키지라고 한다. 예를 들어 Test라는 폴더 안에 __init__.py, test.py와 같은 파일들이 모여있는 것이다. 모듈(module)은 함수, 변수, 클래스를 모아놓은 것을 말한다. 일반적으로 한 파일을 말하는데 예를 들어 .py와 같은 하나의 파일 안에 함수와 변수, 클래스가 모여있는 것으로 볼 수..
파이썬의 라이브러리 안을 보다 보면 *args나 **kwargs와 같은 함수의 파라미터 부분에서 보인다. 마치 C++에서 아래와 같은 구문과 유사하게 보인다. 하지만 다행히 파이썬에서 *와 **는 포인터를 의미하는 것은 아니다. 파이썬에선 주소에 직접 접근해서 코딩을 하지는 못하기 때문이다. 아래는 C++ 코드이다. int main(int argc, char **argv){ return 0;} C++에서 argc는 argument의 개수, argv는 배열 형태로 argv[0]에는 실행 파일명이 저장되고 이후 argv[1], argv[2]...에는 입력한 인자(argument)값들이 들어가게 된다.참고로 매개변수(parameter)와 전달인자(argument)는 혼용해서 사용하기도 하는데 일반적으..
React Native를 사용하다 스타일링을 위한 스크립트를 작성하는 도중 ...Platform이라는 구문을 발견하게 되었다. 기존에 사용하던 언어들에서 보지 못한 특이한 종류의 구문들이 JS에서는 종종 보이는 것 같다는 느낌이 든다. 우선 이 전개구문(spread syntax)은 이름 처럼 객체나 배열들을 전개하여 사용할 수 있도록 해주는 문법이다. 마치 파이썬에서 함수에 인자 값들을 받을 때 *args를 이용하여 여러 인자를 한 번에 받을 때 사용하는 것과 비슷한 구문이라는 생각이 든다. 하지만 파이썬에선 *만 있으면 뒤에는 *qwer과 같이 앞에 *만 있다면 뒤에 오는 문자는 사용자 마음대로 써도 무관하지만 자바스크립트에서는 ...을 사용해야 한다는 차이점이 있다. {...obj} [...arr] ..
일급 객체(First-class Object) JS에서 함수는 일급 객체(First-class Object)에 해당한다. 일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 이에 대한 정의는 아래와 같다. 객체지향 프로그래밍에서 자주 언급되는 단어인데 파이썬에서도 해당 개념은 물론 있다만 익숙해진 후엔 인지하고 사용하지는 않았던 것 같다. 변수에 할당(assignment)할 수 있다. 다른 함수를 인자(argument)로 전달 받는다. 다른 함수의 결과로써 리턴될 수 있다. 함수 선언 방식 함수 객체는 위의 조건을 모두 충족시키므로 일급 객체라고 볼 수 있다. 일급 객체이므로 고차 함수를 만들 수 있고 콜백을 사용할 수 있다. 이러한 일급 객체인 함수를 선언하는 방법..