呵呵!Function构造函数
生活随笔
收集整理的這篇文章主要介紹了
呵呵!Function构造函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天準備吐槽一下Function構造函數。
我們知道,不管是函數聲明還是函數表達式都是基于詞法作用域的,明白這點在閉包中十分重要,譬如:
var a='global'; function foo(){var a='local';return function(){console.log(a);} } foo()(); // local根據詞法作用域規則,函數所能訪問的變量取決于它聲明的位置,以上面的例子,函數沿作用域鏈查找,找到第一個變量a就停止查找(即找到局部變量a就停止查找,并不會繼續查找全局變量a),所以理所當然輸出'local',即局部變量a的值。
但是!但是比較奇葩的是,Function構造函數并不是基于詞法作用域的,它向往的是全局作用域(傲嬌。。。):
var a='global'; function foo(){var a='local';return new Function('console.log(a)'); }foo()(); // global你看,它輸出的是全局的a值。
哎,實際上你可以把Function構造函數看成全局作用域運行的eval(),不過,既然Function構造函數這么奇葩,實際應用會很少啦。。。。況且,可能還會影響性能。
轉載于:https://www.cnblogs.com/linweinb/p/8567997.html
總結
以上是生活随笔為你收集整理的呵呵!Function构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 知识体系
- 下一篇: 出警备案流程是什么?