auto type이 많은 것은 단순히 가독성과 줄맞춤 때문입니다.
camel case를 사용한 이유는 c/c++ 내장 함수와 구분짓기 위함입니다.
모든 코드는 VS code에서 작성되었으며, c++17 기준의 코드입니다.
Apple clang 14.0.0를 이용하여 컴파일 하였습니다.
- source.bjs에 js코드를 작성한다.
- br.sh 스크립트를 실행한다.
- Scan
- Parse
- Interpret
- scope chain
- method chaining
- function(JS답게 1급으로 취급)
- strict equal등 관계 연산
- var, let, const의 특징들
- Array, Object(메서드는 Array의 map과 reduce뿐입니다)
- 그 외 언어 기본 사양: 반복, 분기, 조회, 연산 우선 순위 등
- Arrow function -> this binding 과정이 없기 때문에 함수 형식 분리 불필요
- Class -> 언어 사양 부족
- Call stack & Heap 및 Mark & Sweep GC -> Virtual Machine 구현에 포함시킬 예정
- Event-loop
- 좀 더 똑똑한 Scanning(semicolon 없이 코드 분석 불가)
- 그 외 JS가 제공하는 수 많은 프로토타입 및 기본 메서드들
아래는 단지 예시입니다. 동일한 수준의 연산들은 대부분 가능합니다.
var name = 'bjs';
var name = 'BJS';
const height = 181;
let weight = 90;
weight = 89;
const arr = ['hi', 1, 'wow'];
console.log(arr.map(function(x) {return x + 1;}).reduce(function(acc, curr) {return acc + curr;}, ""));
function test(x) {
console.log(x);
}
const arr = [test];
const obj = {func:test};
arr[0](3);
obj["func"]('hello');
const upper = 1;
for (let i = 0; i < 4; i++) {
const lower = 0;
if (i % 2 === 0) {
console.log(upper, lower);
}
}
console.log(lower);
if ([] === []) { console.log('this will not be printed');}
const arr = [];
if (arr === arr) { console.log("this will be printed");}
console.log('1' == 1);
console.log('1' === 1);