JavaScript中閉包與回呼的實例講解
本文主要解釋了js閉包和回調,閉包的概念和特性,結合實例分析了使用步驟與方法
一、閉包
閉包(closure)是Javascript語言的一個困難點,也是它的特色,許多高階應用都要依賴閉包實作。
閉包有三個特性:
1.函數巢狀函數;
2.函數內部可以引用外部的參數和變數;
3.參數和變數不會被垃圾回收機制回收。
閉包是指有權訪問另一個函數作用域中的變數的函數,而創建閉包的最常見的方式就是在一個函數內創建另一個函數,透過另一個函數訪問這個函數的局部變數。使用閉包有一個優點,也是它的缺點,就是可以把局部變數駐留在記憶體中,可以避免使用全域變數。全域變數在每個模組都可調用,這勢必將是災難性的。所以推薦使用私有的,封裝的局部變數。一般函數執行完畢後,局部活動物件就被銷毀,記憶體中只保存全域作用域。但閉包的情況不同!
範例一:
//閉包就是一個函數的回傳值為另外一個函數,在outer外部可以透過這個傳回的函數存取outer內的局部變數.
function outer(){ var val = 0; return function (){ val += 1; document.write(val + "<br />"); }; } var outObj = outer(); outObj();//1,执行val += 1后,val还在 outObj();//2 outObj = null;//val 被回收 var outObj1 = outer(); outObj1();//1 outObj1();//2
閉包會使變數始終保存在記憶體中,如果不當使用會增加記憶體消耗(如果上例中定義很多outer(),則記憶體中會保存很多val變數)。
javascript的垃圾回收原理:
(1)、在javascript中,如果一個物件不再被引用,那麼這個物件就會被GC回收;
(2)、如果兩個物件互相引用,而不再被第3者所引用,那麼這兩個互相引用的物件也會被回收。
那麼使用閉包有什麼好處呢?使用閉包的好處是:
1.希望一個變數長期駐紮在記憶體中
2.避免全域變數的污染
3.私有成員的存在
二、回呼
回呼函數原理:我現在出發,到了通知你」。這是一個非同步的流程,「我出發」這個過程中(函數執行),「你」可以去做任何事,「到了」(函數執行完畢)「通知你」(回呼)進行之後的流程。
function doSomething(callback){ callback(1,2); } function numberAdd(a,b){ document.write(a+b); } doSomething(numberAdd);//3
function Thing(name){ this.name = name; }
以上是JavaScript中閉包與回呼的實例講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

隨著網路金融的快速發展,股票投資已經成為了越來越多人的選擇。而在股票交易中,蠟燭圖是常用的技術分析方法,它能夠顯示股票價格的變動趨勢,幫助投資人做出更精準的決策。本文將透過介紹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狀態碼是指當瀏覽器向伺服器發起請求時,服務
