JavaScript中立即執行函數實例詳解
javascript和其他程式語言比較比較隨意,所以javascript程式碼充滿各種奇葩的寫法,有時霧裡看花,當然,能理解各型各色的寫法也是對javascript語言特性更進一步的深入理解。本文主要為大家介紹了JavaScript中立即執行函數的相關資料,希望能幫助大家。
前言
js立即執行函數可以讓你的函數在建立後立即執行,js立即執行函數模式是一種語法,可以讓你的函數在定義後立即被執行,這種模式本質上就是函數表達式(命名的或匿名的),在創建後立即執行。
( function(){…} )()和( function (){…} () )是兩種javascript立即執行函數的常見寫法,最初我以為是一個括號包裹匿名函數,再在後面加個括號呼叫函數,最後達到函數定義後立即執行的目的,後來發現加括號的原因並非如此。
下面話不多說了,來一起看看詳細的介紹吧。
通常我們宣告一個函數有以下幾種方式:
#// 声明函数f1 function 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 */ }() // 只有传递参数时,才需要最后那个圆括号。 ……
(function($){ " //插件实现代码 })(jQuery);
#JavaScript立即執行函數的三種不同寫法_javascript技巧
JavaScript中的立即執行函數表達式介紹_javascript技巧
以上是JavaScript中立即執行函數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

股票分析必備工具:學習PHP和JS繪製蠟燭圖的步驟,需要具體程式碼範例隨著網路和科技的快速發展,股票交易已成為許多投資者的重要途徑之一。而股票分析是投資人決策的重要一環,其中蠟燭圖被廣泛應用於技術分析。學習如何使用PHP和JS繪製蠟燭圖將為投資者提供更多直觀的信息,幫助他們更好地做出決策。蠟燭圖是一種以蠟燭形狀來展示股票價格的技術圖表。它展示了股票價格的

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

隨著網路金融的快速發展,股票投資已經成為了越來越多人的選擇。而在股票交易中,蠟燭圖是常用的技術分析方法,它能夠顯示股票價格的變動趨勢,幫助投資人做出更精準的決策。本文將透過介紹PHP和JS的開發技巧,帶領讀者了解如何繪製股票蠟燭圖,並提供具體的程式碼範例。一、了解股票蠟燭圖在介紹如何繪製股票蠟燭圖之前,我們首先需要先了解什麼是蠟燭圖。蠟燭圖是由日本人

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。

Golang是一門功能強大且高效的程式語言,可用於開發各種應用程式和服務。在Golang中,指標是一種非常重要的概念,它可以幫助我們更靈活和有效率地操作資料。指標轉換是指在不同類型之間進行指標操作的過程,本文將透過具體的實例來學習Golang中指標轉換的最佳實踐。 1.基本概念在Golang中,每個變數都有一個位址,位址就是變數在記憶體中的位置。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
