일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Algorithm
- 그래프
- dp
- javascript
- dfs
- 가천대
- 타입 챌린지
- 레벨 1
- 크롤링
- socket
- ip
- 알고리즘
- 프로그래머스
- 프로그래머스 레벨 2
- 백준
- 소켓
- Nestjs
- 타입스크립트
- 수학
- typescript
- TCP
- HTTP 완벽 가이드
- 자바스크립트
- 문자열
- type challenge
- HTTP
- 쉬운 문제
- Node.js
- Crawling
- BFS
- Today
- Total
목록프로그래밍/JavaScript (19)
kakasoo

프로그래밍 언어의 구분 컴파일 : 소스코드를 실행하기에 앞서 기계어로 번역하는 행위 컴파일러 : 컴파일을 수행하는 소프트웨어 인터프리터 언어 : 프로그램을 한 줄 마다 기계어로 번역하는 프로그래밍 언어 인터프리터 : 프로그램을 번역해서 실행시키는 소프트웨어 프로그래밍 언어의 유형 절차식 언어 : 절차를 순서대로 작성하는 언어 객체지향 언어 : 처리와 관련된 데이터를 하나로 묶어 객체 단위로 관리하는 언어 함수형 언어 : 프로그램을 함수를 조합하여 구현하는 언어 논리형 언어 : 데이터 사이의 관계와 논리를 설명해나가는 언어 자바스크립트의 특징 인터프리터 언어 웹 브라우저에는 자바스크립트 코드를 해석하는 JIT (Just In Time)컴파일러가 내장되어있다. 동적 프로토타입 기반 객체지향 언어이다. → 클..

아는 동생에게 프로그래밍을 가르치며, this에 대해서 설명한 적이 있다. 나는 this를 계속해서, ‘나’라고 설명했다. 너에게 ‘나’는 너일 것이고, 나에게 ‘나’는 나 자신을 가리키는 말인 것처럼, this는 클래스의 인스턴스들이, 각자 자기 자신을 가리키는 말이라고 말했다. 예컨대 자동차에게 ‘나’는 차종이 아니라, 그 자동차 개체 한 개만을 의미한다는 뜻이었다. 객체지향적인 것 this가 있단 것만으로도 언어는 조금 더 객체지향적이라고 할 수 있다. Class를 정의한 후 인스턴스를 만든다면, 우리는 깊은 복사를 할 필요 없이 새 객체를 만들 수 있다. 물론 Function을 이용해 재사용성을 의도적으로 없애는 캡슐화도 있긴 하나, 이런 특수한 경우를 제외하고는 대부분의 클래스 기반 언어는 객체..

C언어를 다룰 때 가장 힘든 것이 동적할당이었다. 동적할당을 처음 배울 당시, 나는 프로그래밍을 마치고 동적할당을 해제하지 않으면, 컴퓨터의 자원을 영영 잃어버리는 것이 아닐지, 그 부분에 대해서 두려움을 가졌다. 당연히 지금은 운영체제가 그런 부분을 자동적으로 처리해준다는 것을 알고 있다. 하지만 그 사실을 몰랐던 나는, 동적할당을 의사가 환자 다루듯 신중하게 해야 했다. 도달 가능성 Mark-and-Sweep 알고리즘이 있다. 이는 말하자면 DFS, BFS와 유사하게, 도달가능한 모든 영역을 탐색하는 알고리즘이다. 나중에 다른 포스팅에서 말하겠지만, JavaScript는 다양한 Enviorment를 Context로 가진다. Mark-and-Sweep 알고리즘은 이 환경 중 맨 처음에 위치할 전역 환경..

형변환 JavaScript에서는 명시적인 형변환, 묵시적인 형변환이 있다. 엄밀히 말해, 묵시적인 형변환은 Wrapper 함수로 인한 형변환이라고 할 수 있겠다. 여기서는 둘의 구분 없이, 자주 보게되는 형태의 형변환들을 짚고 넘어가고자 한다. String String(1) === '1'; // true 1 + "" = '1' // true String으로 감싸서 문자열로 변경할 수도 있으며, 숫자에 문자열을 더해 변경할 수도 있다. Number Number('1') === 1 // true '1' - 0 === 1 // true +'1' === 1 // true '1' / 1 === 1 // true String과 마찬가지로 Number로 감싸서 숫자로 변경하는 것이 가능하고, 뺄셈이나 나눗셈으로도 가..

JavaScript에서의 배열과 리스트 MDN을 참고하면, JavaScript의 Array는 List 형태의 고수준 객체이다. 고수준 객체라는 건, 프로그래머가 내부 코드를 알 필요 없이 사용 가능한, 다양한 메서드들이 미리 구현된 자료구조임을 뜻한다. const arr = new Array(); arr[arr.length] = 3; arr.push(3); 정말 간단하게 push를 구현한다면 위의 코드처럼, 현재 length에 대한 값 대입이다. C언어에서는 생성되지 않은 공간에 값을 할당하면 에러가 발생하지만, JavaScript에서 Array는 길이나 요소의 형태가 결정되어 있지 않아 가능한 방법이다. 여담으로, 이를 이용하면 0번 index 다음에 100번 index에 값을 넣는 것도 가능하다. 물..

var sum; // sum 이라는 이름의 변수 선언 var a,b; // a,b 라는 이름의 변수 선언 console.log(x); // x 변수가 선언되지 않은 경우 undefined 출력 y = 2; // 변수를 선언하지 않은 상태로 값 입력시 전역 변수로 취급 console.log(y); // 2 변수 끌어올림 (호이스팅) x가 미리 선언되지 않은 상태로 x를 출력하는 코드는, undefined를 출력한다. 하지만 선언 없이 값 대입을 먼저 할 경우에는 오류 없이 정상적인 출력이 된다. 이는 y를 출력한 것에서 확인가능하며, 자동적으로 변수가 전역 취급되었음을 의미한다. 이것만으로도 JavaScript는 다른 언어와 다른 특징을 가지고 있음을 확인할 수 있다. JavaScript가 변수 선언에 대..

1. 인터프리터 언어 JavaScript는 기본적으로 인터프리터 언어이다. 인터프리터는 브라우저에서 F12 개발자 모드 ( 크롬의 경우 ) 를 눌러 한 줄씩 코딩 가능한 것을 말한다. 인터프리터 언어는 조금 느린 대신에, 개발자에게 조금 더 친화적인 것이 특징이다. 모든 라인이 컴파일이 이루어진 후에 전체적인 코드를 디버깅할 수 있는 컴파일 언어와 달리, 인터프리터 언어는 한 줄 씩 그 내용을 확인해가면서 코드를 짤 수 있다. 2. 객체지향과 함수형 C++과 Java는 클래스를 이용하여 객체를 생성하는 클래스 기반의 객체지향 언어이다. 반면 JavaScript는 프로토타입 (Prototype) 을 상속하는 프로토타입 기반 객체지향 언어이다. JavaScript에서는 객체를 생성한 후에도 프로퍼티와 메서드..