예전에 사용하던 말이 많았던 var... 요즘에는 const와 let으로 대체되었다.

하지만, 완전 대체되진 않았다. 스코프(유효 범위) 때문이다.

 

const와 let은 블록 스코프를 지니고 있다.

var는 함수 스코프를 지니고 있으므로 일반적인 if문의 블록이나 for문의 블록과 상관없이 동작한다.

 

const는 쉽게말해서 한 번만 할당한다( = )고 생각하면 된다. 한 번 값을 할당하면 그 이후로 값을 재할당할 수 없다.

또한, 초기화할 때 값을 할당해야 에러가 나지 않는다. 

즉,

const a;

a = 20;

 

이렇게 작성하는 것은 불가능하다. 무조건 첫 선언과 동시에 할당해야한다.

 

let은 값이 언제든지 변할 수 있는 변수를 선언할때 사용한다. const에 비해 var와 유사하다.

const b;

b = 20;

 

둘 중 언제 어떤 것을 쓰면 될까?

 

변수는 초기화했던 값이 다른 값을 다시 할당하는 경우는 적을뿐만 아니라 실수로 변수의 값을 변경할 가능성도 존재한다.

따라서, 기본적으로 const를 사용하고 다른 값을 할당해야한다는 확신이 있을 때 let를 사용하면 된다.

 

 

Posted by sungho88
,

app.js에서 라우터를 사용하는데, 이러한 에러가 발생했다.

 

 

const pageRouter = require("./routes/page");  

 

app.use("/", pageRouter);

 

이렇게 단순한 두 줄에서 에러가 났다. 

 

처음에는 오타인 줄 알고 유심히 봤지만 너무 단순한 문장이라 에러날 곳이 없었다.

 

검색했다. 문제는 page.js 파일 안에 있었다.

 

바로~ router를 모듈로 export해주지 않아서 난 에러였다. 이런이런~

 

module.exports를 통해서 router를 등록해줘야 다른 모듈에서 사용이 가능하기 때문에 꼭 붙여줘야한다.

 

참고로 꼭 맨 밑에 작성하지는 않아도 된다. 하지만 꼭 있어야한다.

 

이번 에러로 하나 배웠다. 실수하지 말고 module.exports는 잊지말자!! 

 

 

 

Posted by sungho88
,

다음과 같은  7가지를 제외한 모든 값은 true입니다.

 

1. 값이 없거나 

2. 0 또는 -0

3. null

4. false

5. NaN,

6. undefined,

7. 빈 문자열 ("")

 

문자열 "false"를 포함한 그 외 모든 다른 값은 초기값을 true로 설정합니다.

 

심지어, 빈 객체{}  또는 빈 배열[] 역시 true입니다.

 

그래서, 코드를 간결하게 사용할 수 있게 된다.

 

예를 들어, 홀수와 짝수를 구별하는 코드를 작성할 수 있다.

 

  if (num % 2) {
    return odd;
  }
  return even;
}

num이 짝수라면?

나머지가 0이 나올 것이고, 위에서 보았듯이 0은 false이므로 if문을 수행하지 않을 것이다.

 

Posted by sungho88
,