国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入淺析JS Function()構造函數

2019-11-20 09:10:48
字體:
來源:轉載
供稿:網友

js中function對象是一個令人著迷的東西,但由于他太過于靈活,常常令人迷惑.

先給大家看個代碼片段。

var scope="global";function constructFunction(){var scope="local";return new Function(" return scope");}constructFunction()(); function constructFunction2(){var scope="local";return function(){return scope;}}constructFunction2()();

   看到這兩個你的第一感覺是什么?都返回 "local"??,如果是這樣的話就需要好好看一下下面的講解了。constructFunction2()了解閉包的就應該很容易的知道答案 是"local",這里就不細講了。下面我著重講一下constructFunction()的情況。

  這里用到了 Function()構造函數, Function()構造函數雖然不是很常用,但是了解一下還是很有必要的。

  不管是通過函數定義語句還是函數直接量表達式,函數的定義都要使用 function()關鍵字。單函數還可以通過Function()構造函數來定義,比如:

 var f=new Function("x","y","return x*y");

  這一行的實際效果和下面的一行代碼是等價的。

var f=function(x,y){x*y};

   Function()構造函數可以傳入任意數量的字符串實參,最后一個實參所表示的文本是函數體;它可以包含任意的Javascript 語句,每條語句之間用分號分割。傳入構造函數的其他所有的實參字符串是指定函數的名字的字符串。如果定義的函數不包含任何參數,只需給構造函數簡單地傳入 一個字符串函數體即可。

  關于Function()構造函數需要特別注意一下幾點:

  1.Function()構造函數允許JavaScript在運行時動態的創建并編譯函數。

  2.每次調用Function()構造函數都會解析函數體,并創建新的函數對象。如果是在一個循環或者多次調用的函數中執行這個構造函數,執行效率會受到影響。相比之下,循環中的嵌套函數和函數定義表達式則不會每次執行時都重新編譯。

  2.最后的一點,也是關于Function()構造函數非常重要的一點,就是它所創建的函數并不使用詞法作用域,相反,函數體代碼的編譯總是會在頂層函數執行。看完這一點,上面的函數constructFunction()();返回“global”應該很容易理解了吧?

以上所述是小編給大家介紹的JS Function()構造函數,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瓦房店市| 嘉义县| 鲁甸县| 高青县| 峡江县| 筠连县| 嘉荫县| 金山区| 天峻县| 永年县| 鄄城县| 广元市| 陈巴尔虎旗| 大足县| 汤原县| 长丰县| 开远市| 越西县| 大荔县| 隆德县| 巫溪县| 兴隆县| 盐池县| 眉山市| 泌阳县| 承德县| 张家界市| 通海县| 贡嘎县| 双辽市| 永城市| 丹巴县| 肇州县| 阿尔山市| 东宁县| 双桥区| 东乌珠穆沁旗| 宿州市| 兴安盟| 玛纳斯县| 达孜县|