본문 바로가기

전체 글

(63)
자바스크립트에서 스코프란 스코프란 특정 장소에 변수를 저장하고 나중에 그 변수를 찾는 데는 잘 정의된 규칙이 필요한데, 바로 이런 규칙을 일컫습니다. 컴파일러 이론 자바스크립트 (이하 JS)는 일반적으로 동적 언어 또는 인터프리터 언어로 분류하나 사실은 컴파일러 언어입니다. JS 엔진은 전통적인 컴파일러 언어에서 컴파일러가 하는 일의 상당 부분을 우리가 아는 것보다 세련된 방식을 처리해줍니다. 전통적인 컴파일러 언어의 처리 과정에서는 소스코드가 실행되기 전에 보통 3단계를 거치는데, 이 과정을 컴파일레이션이라고 합니다. 여기서 컴파일의 자세한 과정은 배보다 배꼽이 더 클 수 있으므로 생략하도록 하겠습니다. JS 엔진이 기존 컴파일러와 다른 점은 JS 컴파일레이션을 미리 수행하지 않아서 최적화할 시간이 많지 않다는 것입니다. 보통..
자바스크립트에서 특징적인 문법 정리 문과 표현식 문 (statement)과 표현식(expression)을 같은 의미라고 넘겨버리는 개발자가 많습니다. 하지만, 자바스크립트 (이하 JS)에서 두 용어는 다릅니다. 문은 문장, 표현식은 어구, 연산자는 구두점/접속사로 비유할 수 있습니다. let a = 3 * 6; let b = a; b; 여기서 3 * 6은 표현식입니다. 2, 3번째 줄 역시 표현식입니다. 또한, 이 세 줄은 각각의 표현식이 포함된 문입니다. 1, 2번째 줄은 변수를 선언하는 문이므로 선언문이라고 합니다. 만약, let과 같이 변수를 선언하는 부분이 빠졌다면 할당 표현식이라고 합니다. 3번째 줄 같은 경우는 표현식 문이라고 합니다. 모든 문은 완료 값을 가집니다. 이를 확인할 확실한 방법은 브라우저 개발자 콘솔 창에 타이핑해..
자바스크립트에서 타입 강제변환이란 값 변환 어떤 값을 다른 타입의 값으로 바꾸는 과정이 명시적이면 타입 캐스팅이라 부르고 암시적이면 강제변환이라고 합니다. 자바스크립트 (이하 JS)에서는 대부분 모든 유형의 타입변환을 강제변환으로 일컫는 경향이 있으므로 '암시적 강제변환'과 '명시적 강제변환' 두 가지로 구별하려고 합니다. 명시적 강제변환은 코드만 봐도 의도적으로 타입변환을 일으킨다는 것이 명백합니다. 암시적 강제변환은 다른 작업 도중 불분명한 side effect로부터 발생하는 타입변환입니다. let a = 24; let b = a + ''; // 암시적 강제변환 let c = String(a); // 명시적 강제변환 추상 연산 ToString 문자열이 아닌 값을 문자열로 변환 작업은 ToString 추상 연산 로직이 담당합니다. 숫자..
자바스크립트에서 네이티브란 네이티브 String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol() 네이티브는 내장 함수입니다. 생성자처럼 사용할 수 있지만 생성되는 결과물은 예상과는 조금 다를 수 있습니다. const a = "abc"; const b = new String("abc"); typeof a; // string typeof b; // object b instanceof String; // true new String("abc") 생성자의 결과는 원시 값 "abc"를 감싼 객체 래퍼(Wrapper)입니다. 어떠한 객체가 어떤 네이티브에 속하는지는 Object.prototype.toString()이라는 메서드에 값을 넣어 호출..
자바스크립트에서 값이란 배열 자바스크립트 (이하 JS) 배열은 타입이 엄격한 다른 언어와 달리 어떤 타입의 값도 담을 수 있는 상자입니다. let arr = [1, '2', [3]]; // no error 여기서 주의할 점은 슬롯을 건너뛸 수 있다는 점입니다. let arr = []; arr[0] = 0; arr[2] = 2; arr[1]; // undefined arr.length; // 3 1번째 인덱스에 값을 넣지 않고 2번째 인덱스에 값을 넣는 경우에는 a[1]은 undefined면서 arr 배열의 길이는 3이 됩니다. 여기서 arr의 인덱스가 건너뛰더라도 값을 삽입한 마지막 인덱스에 따라 배열의 길이가 설정된다는 점을 알 수 있습니다. 배열 자체는 하나의 객체이기 때문에 배열 인덱스는 숫자이지만 key - value ..
자바스크립트에서 타입이란 타입이란 자바스크립트 (이하 JS) 에서 타입이란 JS 엔진, 개발자 모두에게 어떤 값을 다른 값과 분별할 수 있는, 고유한 내부 특성의 집합으로 정의할 수 있습니다. 예를 들면, 24와 "24" 라는 값은 다르게 취급됩니다. 24는 수학 연산 같이 계산을 하려는 의도가 있지만 "24"는 특정 페이지에 출력할 문자열과 같은 의도로 만든 값입니다. 이렇듯 다른 값과 분류되는 특성을 지닌 것이 타입의 필수조건이 됩니다. 내장 타입 자바스크립트에는 7가지의 내장 타입이 존재합니다. null undefined boolean number string object symbol object를 제외한 나머지 6가지 타입을 primitive (원시) 타입이라고 합니다. 값 타입은 typeof 연산자로 확인할 수 있습니다..
WSL에서 chown, chmod 되지 않을때 방법 C나 D 혹은 다른 드라이브 밑에 있는 폴더나 파일의 소유자나 권한을 변경하고 싶은 경우가 있습니다. 명령어를 쳐도 바뀌지 않을 때에는 먼저 WSL에서 메타데이터와 함께 마운트되어야 합니다. c드라이브를 예로 들면, sudo umount /mnt/c
WSL에서 mongodb 실행하기 1. WSL 터미널을 연다 2. 'sudo apt update' 을 입력하고 apt 업데이트 3. 'sudo apt-get install mongodb' 을 입력하고 설치한다 4. 'mongod --version' 을 입력하고 설치가 잘 되었는지 확인한다 5. 'sudo service mongodb start' 을 입력하고 mongo 를 사용할 수 있게 서비스 시작 6. 'mongo' 를 입력하면 mongo shell로 이동한다 7. 다 사용했으면 'sudo service mongodb stop' 을 입력하고 서비스를 종료한다 'sudo service mongodb status'를 입력하면 지금 mongodb 서비스가 실행중인지 알 수 있다 실행중이면 오른쪽에 [OK] 아니면 [Fail]