2017-09-26 176 views
0

我正在使用eval()從字符串運行腳本。下面是代碼:如何從eval()獲取console.log輸出?

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

我會從控制檯輸出得到hello。我想知道是否可以將hello保存到當前上下文中的變量中。所以我正在尋找這樣的事情:

const output = eval('console.log("hello")'); //我希望控制檯輸出從eval()函數返回。

但我得到一個undefined響應。有沒有辦法讓我這樣做?

+0

可能重複[截取調用console.log在Chrome中](https://stackoverflow.com/questions/9216441/intercept-calls-to-console-log-in-chrome) – qxg

+1

好控制檯不會返回任何東西那麼爲什麼你會期望它返回一些東西呢? – epascarello

回答

2

這是不可能的,因爲console.log()只返回undefined,但是你可以使一個函數返回一些東西。

例子:

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

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

希望這會有所幫助。

+2

這是進入一個危險的領域,與預定義的東西搞亂。 – TricksfortheWeb

+1

雖然很好的答案。 :) – TricksfortheWeb

相關問題