new Function和eval區別

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

相關文章
相關標籤/搜索