[JavaScript] 입출력 (1)
우선 자바스크립트에서는 변수 선언을 let으로 한다.
(왜 let일까..? let's go 느낌으로다가 let을 쓰는걸까..? 어원은 딱히 없다고 하는데 나는 js를 통해 let을 처음 접해서 되게 생소했다)
출력
출력은 기본적으로 console.log라는 메소드를 사용한다. 문자열은 크게 세가지로 나타낼 수 있다.
1. 큰따옴표 console.log("Hello")
2. 작음따옴표 console.log('Hello')
3. 백틱 consolo.log(`Hello`)
만약 문자열 안에 작은따옴표, 큰따옴표 등 얘네를 포함하고싶으면 (ex. It's good),
1. 다른 애로 감싸기 ex) "It's good"
2. 포함시키고 싶은 애 앞에 백슬래시 넣어주기 ex) 'It\'s good'
그리고 제일 신기했던 출력방식은..
출력문구 안에 변수를 넣고싶을 때는 ${변수}형태를 쓰는데 꼭 이 ``이거로 감싸야된다한다.
예를들면,
let a = 3;
consolo.log(`My score is ${a} point.`); 이런식으로 변수 출력이 가능한데, 이때 꼭 백틱을 써야된다.
왜지.. 나의 1등스승 지피티에게 물어보니까 큰따옴표랑 작은따옴표는 사용을 제한합니다. 왜냐하면 큰따옴표와 작은따옴표는
이미 정통적 문자열에도 사용하기 때문에 이를 구분하기 위해서입니다. 이렇게 대답했는데 이해는 가지 않는다.
암튼 그렇다니까 나는 헷갈리지 않기 위해서+습관을 위해서 출력할 때는 다 백틱을 쓸 것이다.
입력
js에서는 fs모듈의 readFileSync()함수를 사용해서 파일에서 데이터를 읽어온다. fs모듈의 readFileSync()을 사용하기 위해서는 맨 위에 const fs= require("fs");를 적어야한다.
이때, 아까 let을 사용해서 선언한다했는데 왜 const일까! 왜냐면 fs모듈은 실행 후 변하면 안되기 때문에 const를 사용하는 것이 더 좋다 ! let을 해도 되긴하지만 const가 좋다.
const fs = require("fs");
let input = fs.readFileSync(0);
console.log(input);
이런식으로 입력받고 출력하면 되는 것이다 ! Hello world를 입력했을 때 출력결과를 봐보자.
<Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
왜이럴까 ! 실은 js는 입력을 우리가 알아들을 수 없는 형태로 받아들인다. 그래서 저런식으로 출력되는 것이다. 그래서 readFileSync(0)뒤에 toString()을 해줘서 문자열로 변환해서 입력받아야한다. 고치면 이렇게 된다.
const fs = require("fs");
let input = fs.readFileSync(0).toString();
console.log(input);
그럼 만약.. 숫자를 입력받고싶을 때는 어떻게 하면 될까? 얘를 숫자로 변환시키기 위해서, Number함수를 쓸 수 있다.
const fs = require("fs");
let input = Number(fs.readFileSync(0).toString());
console.log(input);
이런식으로 선언해주면, 들어오는게 숫자처리로 들어와서 3이 입력됐을 때 console.log(input+1)을 해주면 4가 출력된다. 만약 Number함수가 없었다면, 31이겠지? 왜냐면 문자열일테니까 3 + 1 해서 31!
이정도면.. 기본적인 입출력은 배운거 같다. 추가적 입출력은 다음에 알아보도록하자
