Study/Javascript

node로 run해서 console 결과값과 다르게 나올 때

고래상어9 2022. 3. 28. 20:45

모던 자바스크립트 Deep dive로 공부하는 내용입니다. 

//17-21
let obj = new Object();
console.log(obj); //{}


obj = Object();
console.log(obj); // {}

let f = new Function('x', 'return x ** x');
console.log(f); //f anonymous(x) {return x ** x}

f = Function('x', 'return x ** x');
console.log(f); // f anoymous(x) {return x ** x}

 

node로 run을 하는데..

 

책이랑 같은 값이 나오지 않아서 두 눈을 씻고 쳐다봐도 이유를 못찾았다...

그래서 

코드와 함께 개발자방에 질문을 남겼다.

더보기

Q

function 생성자 함수는 new 연산자 없이 호출해도 new연산자와 함께 호출했을때와 동일하게 동작한다는걸 보여주는 코드인데.. 

막상  코드를 치면 f anonymous(x) { return x ** x }가 안나오고 [Function: anonymous] 이렇게만 나오는데 뭐가 잘못되었나요? 

두둥.. 천사같은 익명님이 친절히 콘솔창에 똑같이 입력해보세요 라고 하셨고 

결과는 헉 책과 똑같이 나왔다. 

너무 신기하고 한편으로는 이렇게 1차적으로 콘솔에 쳐볼 생각을 못했던 내가 너무 안타까웠다.

노드로 런했을때와는 표시방법의 차이라고 설명들었다. 

노드에서 똑같이 얻고 싶을 때는 그럼 어떻게 해야할까?에 대한 궁금증이 생겼고 

console.log(Function('x', 'return x ** x').toString())

두둥.. 이렇게 했더니 책에서처럼 나왔다.

감사합니다...