Dev/JavaScript

[JavaScript] console.log찍는데 undefined도 나오는 이유

ujam 2022. 12. 18. 22:19
728x90
반응형

 

 

cmd(명령 프롬프트)에서 node를 실행하면 javascript를 사용할 수 있습니다.

 

 

 

 

이렇게 cmd에서 console.log(1)을 찍으면

1이 출력되는 것을 알 수 있습니다.

 

 

 

근데 1 밑에 undefined가 같이 출력되는걸 보고 console.log(1) 말고는 없는데 어디서 나온거지 너무 궁금했습니다.

 

 

 

 

결론은 REPL의 특성 때문입니다.

 

 

 

REPL이란 Read Eval Print Loop의 약자입니다.

 

 REPL은 명령줄 인터페이스인 CLI에서 동작합니다.  
윈도우에서는 cmd, powershell 환경에서 사용이 가능합니다.

 

 

 

약자에 의미가 다 담겨있습니다.

REPL이 실행 상태에서는 입력한 소스코드를 읽고(Read) 명령어를 평가(Eval)하고 결과를 출력(Print)한 다음 다시 입력을 기다리는 상태로 돌아가는 과정을 반복(Loop)합니다.

 

Eval에서 평가는 산술, 루프, 조작 등을 의미합니다.

 

 

 

저 과정을 이해해보면

 

Read: console.log(1)을 읽고,

Eval: 소스코드의 일부를 평가하고,

Print: 1을 출력하고,

Loop: 출력 후 입력받을 준비.

 

단지 1+2를 적었을 때에는 1+2에 대한 평가를 한 후에 출력해주기 때문에 undefined가 출력되지 않지만

 

console.log()에서는 1+2를 이미 평가를 한 후에 출력하기 때문에

Eval 단계에서 평가할 것이 없기 때문에 undefined를 출력하게 되는 것 입니다.

 

 

 

 

 

 

📃참고

https://blog.bitsrc.io/why-does-console-log-return-undefined-e06d44b4d0f8

 

Why does console.log() return ‘undefined’?

Why Node.js REPLs are how they are, and what happens when there is nothing to evaluate

blog.bitsrc.io

 

 

 

 

 

 

 

728x90
반응형

'Dev > JavaScript' 카테고리의 다른 글

[JavaScript] Object.values 사용법  (0) 2022.12.09
[JavaScript] Object.keys 사용법  (0) 2022.12.08
Moment.js를 Day.js로 대체하자  (0) 2022.12.04
[JavaScript] reduce 사용법  (0) 2022.10.22
[JavaScript] map 사용법  (0) 2022.09.24