亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

JavaScript中立即執行函數實例詳解

2024-05-06 16:40:42
字體:
來源:轉載
供稿:網友

前言

js立即執行函數可以讓你的函數在創建后立即執行,js立即執行函數模式是一種語法,可以讓你的函數在定義后立即被執行,這種模式本質上就是函數表達式(命名的或者匿名的),在創建后立即執行。

( function(){…} )()和( function (){…} () )是兩種javascript立即執行函數的常見寫法,最初我以為是一個括號包裹匿名函數,再在后面加個括號調用函數,最后達到函數定義后立即執行的目的,后來發現加括號的原因并非如此。

下面話不多說了,來一起看看詳細的介紹吧。

通常我們聲明一個函數有以下幾種方式:

// 聲明函數f1function f1() { console.log("f1");}// 通過()來調用此函數f1();//一個匿名函數的函數表達式,被賦值給變量f2:var f2 = function() { console.log("f2");}//通過()來調用此函數f2();//一個命名為f3的函數的函數表達式(這里的函數名可以隨意命名,可以不必和變量f3重名),被賦值給變量f3:var f3 = function f3() { console.log("f3");}//通過()來調用此函數f3();

如果你看過一些自定義控件的話你會發現他們大多數都是沿用這種寫法:

(function() { ``` // 這里開始寫功能需求 })(); 

這是我們常說的立即執行函數(IIFE),顧名思義,也就是說這個函數是立即執行函數體的,不需要你額外去主動的去調用,一般情況下我們只對匿名函數使用IIFE,這么做有兩個目的:

     一是不必為函數命名,避免了污染全局變量

     二是IIFE內部形成了一個單獨的作用域,可以封裝一些外部無法讀取的私有變量。

如果看到這兩句話無法理解,那么先從IIFE的運行原理說起。

因為IIFE通常用于匿名函數,這里就用簡單的匿名函數作為栗子:

var f = function(){ console.log("f");}f();

我們發現這里f只是這個匿名函數的一個引用變量,那么既然f()能夠調用這個函數,我把f替換成函數本身可以么:

function(){ console.log("f"); }();

運行之后得到如下結果:

Uncaught SyntaxError: Unexpected token (

產生這個錯誤的原因是,Javascript引擎看到function關鍵字之后,認為后面跟的是函數聲明語句,不應該以圓括號結尾。解決方法就是讓引擎知道,圓括號前面的部分不是函數定義語句,而是一個表達式,可以對此進行運算,這里區分一下函數聲明和函數表達式:

1、函數聲明(即我們通常使用function x(){}來聲明一個函數)

function myFunction () { /* logic here */ }

2、函數表達式(類似以這種的形式)

var myFunction = function () { /* logic here */ };var myObj = { myFunction: function () { /* logic here */ }};

小學我們就學過用()括起來的表達式會先執行,就像下面這樣:

1+(2+3) //這里先運行小括號里面的內容沒有意見撒

其實在javascript中小括號也有相似的作用,Javascript引擎看到function關鍵字會認為是函數聲明語句,那么如果Javascript引擎優先看到小括號會怎么樣:

//用小括號把函數包裹起來(function(){  console.log("f");  })();

函數成功執行了:

f //控制臺輸出

這種情況下Javascript引擎就會認為這是一個表達式,而不是函數聲明,當然要讓Javascript引擎認為這是一個表達式的方法還有很多:

!function(){}();+function(){}();-function(){}();~function(){}();new function(){ /* code */ }new function(){ /* code */ }() // 只有傳遞參數時,才需要最后那個圓括號。……

回到前面的問題,為什么說IIFE這種形式避免了污染全局變量,如果你見過別人寫的jquery插件,里面通常會有類似這樣的代碼:

(function($){  ```  //插件實現代碼})(jQuery);

這里的jquery其實是該匿名函數的參數,聯想一下我們調用匿名函數時候是用f()那么匿名帶參數的就是f(args)對吧,這里把jquery作為參數傳入該函數,那么在函數內部使用形參$的時候就不會影響到外部環境,因為有些插件也會用到$這個限定符,你在這個函數內部可以隨意折騰。

以上,在此過程中參考了以下兩篇文章:

javascript立即執行某個函數:插件中function(){}()再思考

JavaScript中的立即執行函數

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极品少妇xxxxⅹ免费视频| 国产一区二区三区四区福利| 日韩欧美成人网| 日韩一中文字幕| 亚洲bt欧美bt日本bt| 亚洲成人a**站| 欧美黄网免费在线观看| 91最新国产视频| 亚洲国产精品久久91精品| 欧美日韩国产精品| 91精品国产综合久久香蕉的用户体验| 久久精品中文字幕免费mv| 久久久成人的性感天堂| 国产一区二区黑人欧美xxxx| 影音先锋欧美精品| 91亚洲国产精品| 最新国产成人av网站网址麻豆| 国产欧美韩国高清| 国产精品久久久91| 国产91在线播放| 国产一区二区三区久久精品| 在线成人激情黄色| 亚洲专区中文字幕| 美女av一区二区三区| 欧美黑人极品猛少妇色xxxxx| 最近日韩中文字幕中文| 97国产精品人人爽人人做| 91精品国产综合久久香蕉| 久久国产精品亚洲| 久久av中文字幕| 成人激情视频小说免费下载| 色视频www在线播放国产成人| 国产自产女人91一区在线观看| 欧美激情视频网站| 国产精品va在线播放我和闺蜜| 伊人伊成久久人综合网站| 欧美成年人网站| 国产一区红桃视频| 精品网站999www| 亚洲电影第1页| 日韩av免费看| 性亚洲最疯狂xxxx高清| 国产精品9999| 亚洲最新av在线网站| 国产成人激情小视频| 欧美日韩免费观看中文| 高清亚洲成在人网站天堂| 欧美日本中文字幕| 日韩av中文字幕在线免费观看| 亚洲色图偷窥自拍| 欧美国产在线视频| 久久视频在线播放| 国产精品久久久久久av福利软件| 久久亚洲精品国产亚洲老地址| 亚洲在线观看视频网站| 亚洲第一精品久久忘忧草社区| 欧美午夜精品久久久久久人妖| 亚洲日本aⅴ片在线观看香蕉| 日日噜噜噜夜夜爽亚洲精品| 91久久精品久久国产性色也91| 亚洲天堂一区二区三区| 国产精品免费在线免费| 欧美一级在线播放| 亚洲区免费影片| 精品亚洲一区二区三区在线播放| 欧美成人精品在线视频| 亚洲毛茸茸少妇高潮呻吟| 精品日韩美女的视频高清| 日韩av手机在线看| 91网站在线看| 欧美午夜性色大片在线观看| 久久久久久久一区二区三区| 91av视频在线观看| 国产婷婷色综合av蜜臀av| 日韩电影中文字幕av| 日韩精品免费综合视频在线播放| 国产精品视频99| 国产精品香蕉av| 国产亚洲精品久久久久久牛牛| 亚洲精品国产精品国自产在线| 国产欧美一区二区三区四区| 国产91精品青草社区| 久久综合久久88| 久久99热精品这里久久精品| 欧美精品一区在线播放| 性日韩欧美在线视频| 日韩中文字幕在线看| 性欧美长视频免费观看不卡| 自拍偷拍亚洲区| 国模精品一区二区三区色天香| 国产成人精品一区二区在线| 国产精品黄色影片导航在线观看| 国语自产偷拍精品视频偷| 欧美在线观看网址综合| 一夜七次郎国产精品亚洲| 国产亚洲欧美另类中文| 欧美性xxxx极品hd欧美风情| 色婷婷av一区二区三区久久| 伊人精品在线观看| 久久免费少妇高潮久久精品99| 亚洲免费精彩视频| 久久免费视频网| 欧美成人自拍视频| 日韩精品福利网站| 亚洲男人第一av网站| 色妞在线综合亚洲欧美| 久久在精品线影院精品国产| 久久福利视频导航| 日韩三级成人av网| 亚洲一区制服诱惑| 亚洲欧美自拍一区| 日韩精品免费在线视频| 欧美亚洲成人精品| 国产精品黄色av| 日韩av影视综合网| 高清欧美性猛交xxxx黑人猛交| 久久久女女女女999久久| 国产精品扒开腿做爽爽爽男男| 国产日本欧美一区二区三区| 成人啪啪免费看| 国产97在线|日韩| 日韩国产一区三区| 欧美日产国产成人免费图片| 欧美激情a∨在线视频播放| 欧美久久久精品| 久久久免费高清电视剧观看| 久久久国产精彩视频美女艺术照福利| 亚洲国产又黄又爽女人高潮的| 久久99久久99精品免观看粉嫩| 宅男66日本亚洲欧美视频| 亚洲网站在线看| 亚洲高清av在线| 主播福利视频一区| 欧美激情精品久久久久久| 中文字幕日韩精品在线| 日产精品99久久久久久| 亚洲美女激情视频| 欧美日本精品在线| 国内精品视频在线| 国产成人免费av电影| 国产午夜精品理论片a级探花| 久久精品99久久香蕉国产色戒| 91精品国产91久久久久久不卡| 欧美老女人bb| 国产亚洲日本欧美韩国| 欧美日韩精品在线播放| 久久久之久亚州精品露出| 久久精品国产成人精品| 亚洲美女自拍视频| 欧美小视频在线观看| 精品夜色国产国偷在线| 亚洲偷欧美偷国内偷| 日韩免费在线免费观看| 国产精品视频免费观看www| 在线亚洲午夜片av大片| 2019中文字幕全在线观看| 欧美激情第6页| 上原亚衣av一区二区三区| 久久天天躁狠狠躁夜夜躁| 欧美激情一级精品国产| 成人日韩在线电影| 热久久免费国产视频| 久久99精品国产99久久6尤物| 欧美激情视频在线免费观看 欧美视频免费一|