1
2
3
4
5
6
7
8
9
let a = 0;
var b = 0;
let o = {a : 1, b : 2, c : 3};
let arr = [1, 2, 3, 4, 5];
for (let i = 0; i < 5; i++){
let c = 5;
console.log("After for loop", c);
}
console.log(c);

let과 var의 차이는 간단히 말해서 let이 기존 var의 무분별한 변수 접근을 방지한다는 점이다. 이로써 좀 더 안전한 프로그램을 짤 수 있다.
위 코드에서 c는 접근할 수 없다. c를 let으로 선언했기 때문에 for문 안에서만 접근할 수 있다.

1
2
for (let i in o) console.log(o[i]);
for (let i in arr) console.log(arr[i]);

배열이나 객체에서 위와 같이 for in문을 사용할 수 있는데, 여기서 i는 Key값이라는것을 중요하게 알아둬야한다.

1
2
3
4
5
6
7
8
9
10
function A() {
console.log("A");
}
A();
let B = () => {
console.log("B");
}
B();
let C = () => "C";
console.log(C())

다양하게 함수를 선언할 수 있다.

1
2
3
4
const fs = require("fs");
const http = require("http");
const os = require("os");
const url = require("url");

기본적인 require 선언문이다.

1
2
3
console.log(os.type())
console.log(os.uptime())
console.log(os.cpus())

os.type은 OS의 타입
os.uptime은 현재 컴퓨터의 업타임
os.cpus는 현재 컴퓨터의 CPU 정보를 나타낸다. 이 때, 각 cpu의 정보는 논리프로세서 기준이다.

1
2
let sync = fs.readFileSync("index.html");
console.log(sync);

동기식 파일 읽기

1
2
3
fs.readFile("index.html", (err, data) => {
console.log(err, data);
});

비동기는 그 특성상 변수에 대입하여 사용할 수 없다.

1
console.log(url.parse("http://naver.com"))

URL을 파싱해볼 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http.createServer((req, res) => {
let pathname = url.parse(req.url).pathname
console.log("Request for " + pathname + " received.")
if(pathname == "/") pathname = "/index.html";
fs.readFile(pathname.substr(1),(err, data) => {
if(err) {
console.log(err);
res.writeHead(404, {'Content-Type' : 'text/html'});
}else {
res.writeHead(200, {'Content-Type' : 'text/html'});
res.write(data.toString());
}
res.end();
})
}).listen({
host : "127.0.0.1",
port : 8081,
});
console.log("Server is running in 'localhost:8081' !");

HTTP 서버를 열 수 있으며, pathname을 통해 ‘/‘으로 접속시 /index.html를 보여주는데, 지금보니 뭔가 소스가 이상하다. 굳이 저런 방식으로 안해도 된다.

1
if(pathname == '/') pathname = 'index.html';