首頁 web前端 js教程 講解Javascript中什麼是匿名函數

講解Javascript中什麼是匿名函數

Oct 12, 2018 pm 03:56 PM
javascript 匿名函數

本文要跟大家介紹Javascript中什麼是匿名函數 ,有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。

分析:

         1、所謂匿名函數,從字面意思理解,就是沒有名字的函數,js 用()來代替(注意,是英文狀態下的括號

         2、定義形式:   

function (){
    //to add codes that you want to add
}
登入後複製

3、匿名函數作用

(1)與閉包函數比較,最大作用是不污染全域物件,一旦執行完畢,GC自動回收內存,這是與閉包函數本質的區別。閉包函數的一大特點是:

變數常駐內存,只有關閉瀏覽器時,才會釋放。 

function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
      alert(n);
    }
    return f2;
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); // 1000
登入後複製

如上這段程式碼中,result其實就是閉包f2函數。它總共運行了兩次,第一次的值是999,第二次的值是1000。這證明了,函數f1中的局部變數n一直保存在記憶體中,並沒有在f1呼叫後被自動清除。

為什麼會這樣呢?原因就在於f1是f2的父函數,而f2被賦給了一個全域變量,這導致f2始終在記憶體中,而f2的存在依賴f1,因此f1也始終在記憶體中,不會在呼叫結束後,被垃圾回收機制(garbage collection)回收。

這段程式碼中另一個值得注意的地方,就是「nAdd=function(){n =1}」這一行,首先在nAdd前面沒有使用var關鍵字,因此nAdd是一個全域變量,而不是局部變數。其次,nAdd的值是匿名函數(anonymous function),而這個

匿名函數本身也是一個閉包,所以nAdd相當於一個setter,可以在函數外部對函數內部的局部變數進行運算。

(2)與一般函數比較,不執行預編譯。

function fuc() {
    fuc1(); //foo被提到了作用域的最前面, 于是这里可以正常调用foo函数
    fuc2(); //这里会报错bar是个undefined
    function fuc1() {alert("foo()") }
    var fuc2 = function () { alert("bar")};
}
登入後複製

Code:

      匿名函數的幾個表現形式:

     模式 模式一:函數字面量(Function Literal)

  然後執行。

(function(){ 
// insert code here 
})();
登入後複製

模式二:優先運算式 (Prior Expression)

由於 JavaScript 依照從內到外的順序執行表達式,因此使用括號來強制執行已宣告的函數。

(function(){ 
// insert code here 
}());
登入後複製

 模式三:Void 運算子 (Void Operator) 

使用 Void 運算子執行一個單獨的運算元。

void function(){ 
// insert code here 
}();
登入後複製

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多相關教學請造訪JavaScript影片教學

相關推薦:

JavaScript圖文教學

#JavaScript線上手冊

以上是講解Javascript中什麼是匿名函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

C++ 匿名函式的用法和特點 C++ 匿名函式的用法和特點 Apr 19, 2024 am 09:03 AM

匿名函數,又稱lambda表達式,是一種不指定名稱的函數,用於一次性使用或傳遞函數指標。特點有:匿名性、一次性使用、閉包、回傳類型推論。實戰中常用於排序或其他一次性函數呼叫。

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

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

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

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

Golang 匿名函數可以傳回多個值嗎? Golang 匿名函數可以傳回多個值嗎? Apr 13, 2024 pm 04:09 PM

是的,Go語言中的匿名函數可以傳回多個值。語法:func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//函數體}。使用方法:使用:=運算元接收回傳值;使用return關鍵字傳回多個值。

Python Lambda表達式:讓程式設計變得更輕鬆 Python Lambda表達式:讓程式設計變得更輕鬆 Feb 19, 2024 pm 09:54 PM

pythonLambda表達式是一個小的匿名函數,它可以將一個表達式儲存在變數中並傳回它的值。 Lambda表達式通常用於執行簡單的任務,這些任務可以透過編寫一個單獨的函數來完成,但Lambda表達式可以使程式碼更簡潔和易讀。 Lambda表達式的語法如下:lambdaarguments:expressionarguments是Lambda表達式接收的參數列表,expression是Lambda表達式的體,它包含需要執行的程式碼。例如,以下Lambda表達式將兩個數字相加並傳回它們的和:lambdax,

JavaScript和WebSocket:打造高效率的即時搜尋引擎 JavaScript和WebSocket:打造高效率的即時搜尋引擎 Dec 17, 2023 pm 10:13 PM

JavaScript和WebSocket:打造高效率的即時搜尋引擎引言:隨著網路的發展,使用者對即時搜尋引擎的要求也越來越高。傳統的搜尋引擎在進行搜尋時,使用者需要點擊搜尋按鈕後才能得到結果,這種方式無法滿足使用者對於即時搜尋結果的需求。因此,採用JavaScript和WebSocket技術來實現即時搜尋引擎成為了一個熱門的話題。本文將詳細介紹使用JavaScri

lambda 表達式與匿名函數有什麼不同? lambda 表達式與匿名函數有什麼不同? Apr 17, 2024 pm 03:18 PM

lambda表達式和匿名函數都是Python中創建匿名函數的方法,但存在差異。賦值方式:lambda表達式傳回一個函數,而匿名函數必須賦值給變數才能使用。程式碼複雜度:lambda表達式只能包含一個表達式,而匿名函數可以包含多個語句。

Python Lambda表達式:揭秘匿名函數的強大奧秘 Python Lambda表達式:揭秘匿名函數的強大奧秘 Feb 24, 2024 am 09:01 AM

python中的Lambda表達式是匿名函數的另一種語法形式。它是一個小型匿名函數,可以在程式中任何地方定義。 Lambda表達式由一個參數列表和一個表達式組成,表達式可以是任何有效的Python表達式。 Lambda表達式的語法如下:lambdaargument_list:expression例如,下面的Lambda表達式傳回兩個數字的和:lambdax,y:x+y這個Lambda表達式可以傳遞給其他函數,例如map()函數:numbers=[ 1,2,3,4,5]result=map(lambda

See all articles