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

首頁 > 語言 > JavaScript > 正文

深入理解JavaScript 中的匿名函數((function() {})();)與變量的作用域

2024-05-06 15:31:03
字體:
來源:轉載
供稿:網友

匿名函數:沒有實際名字的函數。

匿名函數的作用:

1、通過匿名函數可以實現閉包,關于閉包在后面的文章中會重點講解。在這里簡單介紹一下:閉包是可以訪問在函數作用域內定義的變量的函數。若要創建一個閉包,往往都需要用到匿名函數。
2、模擬塊級作用域,減少全局變量。執行完匿名函數,存儲在內存中相對應的變量會被銷毀,從而節省內存。再者,在大型多人開發的項目中,使用塊級作用域,會大大降低命名沖突的問題,從而避免產生災難性的后果。自此開發者再也不必擔心搞亂全局作用域了。

本章節重點給大家介紹JavaScript 中的匿名函數((function() {})();)與變量的作用域,具體內容如下所示:

以前都是直接用前端框架Bootstrap,突然想看看Javascript,發現javascript是個非常有趣的東西,這里把剛碰到的一個小問題的理解做下筆錄(廢話不多說,上代碼)。

/** * Example 1 */var localvar = "local var";console.log(localvar);//local var/** * Example 2 */console.log(x === undefined); // truevar x = 3;/** * Example 3 */var myvar = "my value";//Test01//will return a value of undefined(function() { console.log(myvar); // undefined var myvar = "local value"; console.log(myvar); // local value})();console.log(myvar);//my value//Test02(function myFunction(){ console.log(myvar);//my value})();//Test03var test = new function(){ console.log(myvar);//my value};

解釋如下:

(1).JavaScript 變量的特別之處是,你可以引用稍后聲明的變量而不會引發異常。這一概念稱為變量聲明提升(hoisting);

(2).JavaScript 變量感覺上是被“提升”或移到了函數或語句的頂部。然而提升后的變量將返回 undefined 值。

(3).在使用或引用某個變量之后進行聲明和初始化操作,這個被提升的引用仍將得到 undefined 值。

(4).這里Example 3中Test01是這次問題的關鍵,Test01和Test02是很相似的(至少我看著很相似)。但是最后輸出結果不能用(1)、(2)、(3)來解釋

  經過查看官方API文檔發現,在匿名函數(function() {})();的使用中形成了閉包(重點,不清楚的可以查閱閉包的概念,閉包概念還是好理解的);

  由于閉包的存在,全局變量自然無法訪問(閉包的一個重要原因就是為了避免訪問全局變量),故Test01 function中第一句輸出結果為undefined。

總結原因:匿名函數(function() {})();是一個特殊的閉包寫法。

總結

以上所述是小編給大家介紹的JavaScript 中的匿名函數((function() {})();)與變量的作用域,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對錯新站長站網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 伊宁县| 甘孜| 巴东县| 斗六市| 察雅县| 集贤县| 甘孜| 凤山市| 翼城县| 彭泽县| 衢州市| 长兴县| 宜君县| 大方县| 灌阳县| 邹城市| 武陟县| 双辽市| 汽车| 通州市| 潮安县| 镇康县| 紫云| 堆龙德庆县| 山东省| 定西市| 乐都县| 来安县| 上虞市| 大方县| 海阳市| 军事| 麟游县| 浏阳市| 沙河市| 百色市| 衡山县| 花莲市| 娱乐| 临洮县| 定陶县|