2017-09-26 5 views
0

eval()을 사용하여 문자열에서 스크립트를 실행합니다. 아래는 코드입니다 : 내가 콘솔 출력에서 ​​hello을 얻을 것이다eval()에서 console.log 출력을 얻는 방법은 무엇입니까?

eval('console.log("hello")');

. 현재 컨텍스트의 변수에 hello을 저장할 수 있는지 궁금합니다. 그래서 다음과 같은 것을 찾고 있습니다 :

const output = eval('console.log("hello")'); // 콘솔 출력이 eval() 함수에서 반환 될 것으로 기대합니다.

하지만 응답은 undefined입니다. 저에게 그렇게 할 수있는 방법이 있습니까?

+0

[Chrome의 console.log에 대한 Intercept calls] (https://stackoverflow.com/questions/9216441/intercept-calls-to-console-log-in-chrome)의 가능한 복제본 – qxg

+1

콘솔에서 아무 것도 반환하지 않습니다. 그래서 당신은 왜 그것이 무언가를 돌려 주길 기대합니까? – epascarello

답변

2

console.log()은 정의되지 않은 값만 반환하기 때문에 불가능합니다. 그러나 반환 할 함수를 만들 수 있습니다.

예 :이 도움이 될 것입니다

console.oldLog = console.log; 
console.log = function(value) 
{ 
    console.oldLog(value); 
    return value; 
}; 

const output = eval('console.log("hello")'); 

희망.

+2

위험한 영역으로 들어가고 있습니다. 미리 정의 된 내용으로 어지럽 힙니다. – TricksfortheWeb

+1

그래도 좋은 대답. :) – TricksfortheWeb