eval和new Function均可以動態解析和執行字符串。可是它們對解析內容的運行環境斷定不一樣。html
eval中的代碼執行時的做用域爲當前做用域。它能夠訪問到函數中的局部變量。函數
new Function中的代碼執行時的做用域爲全局做用域,不論它的在哪一個地方調用的。因此它訪問的是全局變量a。它根本沒法訪問b函數內的局部變量。spa
下面這個例子能夠說明了:code
var a = 'global scope' function b(){ var a = 'local scope' eval('console.log(a)') //local scope ;(new Function('','console.log(a)'))() //global scope } b();
轉自:https://www.cnblogs.com/zhangfengyang/p/5526024.htmlhtm