在javascript中詳細(xì)解讀Function函數(shù)(詳細(xì)教學(xué))
Jun 22, 2018 pm 06:33 PM小編帶給大家一片關(guān)於javascript的基礎(chǔ)教學(xué)內(nèi)容,關(guān)於Function函數(shù)的訓(xùn)練與理解,一起學(xué)習(xí)下吧。
Function函數(shù)是javascript的基礎(chǔ)也是實(shí)現(xiàn)功能的一個(gè)引爆點(diǎn),我們透過實(shí)例分析讓你對Function函數(shù)有一個(gè)更深刻的理解以及在實(shí)際中的用法講解。
Function 確實(shí)是物件。而我們定義的任何一個(gè)函數(shù)其實(shí)都是Function 物件的一個(gè)實(shí)例,也可以理解為指向Function 物件的一個(gè)實(shí)例.
既然是物件的一個(gè)實(shí)例,那肯定指向了Function 類型的一個(gè)引用. 既然指向了一個(gè)引用類型的內(nèi)存地址,那你也可以簡單的把我們定義的函數(shù)理解為一個(gè)變量,這個(gè)變量指向了一個(gè)引用類型的地址,這個(gè)地址指向了Function 物件的一個(gè)實(shí)例.
既然我們定義的函數(shù)其實(shí)是一個(gè)變數(shù),那這個(gè)函數(shù)實(shí)例位址可以同時(shí)指向多個(gè)變數(shù).
看下面的程式碼:
var add = new Function("n", "m", "return n m");
上面是標(biāo)準(zhǔn)的函數(shù)定義,呼叫了Function物件的建構(gòu)子,這個(gè)建構(gòu)子把前面的N個(gè)參數(shù)都預(yù)設(shè)為新函數(shù)的參數(shù),直到最後一個(gè)參數(shù)認(rèn)為是新函數(shù)的函數(shù)體.
從上面的語句中非常直觀的看到add這個(gè)變數(shù)指向了一個(gè)Function 類型的實(shí)例,但是這種命名方法非常繁瑣,等價(jià)於:
(1)函數(shù)表達(dá)式
var add=function(n,m){ return n+m; }
(2)函數(shù)申明
function add(n,m){ return n+m; }
由於javascript語言中的申明提前,所以一版提倡用第二種方法定義函數(shù),關(guān)於函數(shù)申明提前單獨(dú)開闢一篇來說
但是第一種定義方法讓人很直觀看到add 是一個(gè)指向函數(shù)實(shí)例的一個(gè)變量.
既然是一個(gè)變數(shù),就可以賦值給其他變數(shù),可以當(dāng)做參數(shù)在函數(shù)中傳遞,也可以從函數(shù)返回.
所以var add2=add3=add; 現(xiàn)在三個(gè)變數(shù)都指向了這個(gè)實(shí)例的參考, 現(xiàn)在add=null; 以後add2,add3 兩個(gè)函數(shù)完全可以使用不受影響,因?yàn)閍dd 移除函數(shù)物件的引用後指向了null的引用.所以根本不影響add2 和add3兩個(gè)函數(shù).
所以函數(shù)可以當(dāng)做其他函數(shù)的參數(shù)傳入.
所以函數(shù)可以當(dāng)做函數(shù)的回傳值回傳.
因?yàn)楹瘮?shù)名稱只是一個(gè)指向函數(shù)實(shí)例的變數(shù),所以javascript中函數(shù)不會(huì)有重載,因?yàn)橄嗤淖償?shù)指向的是相同的引用位址.最後表示的還是同一個(gè)函數(shù).
函數(shù)既然是物件的實(shí)例,那麼就應(yīng)該有屬性,就應(yīng)該有方法.所以javascript中的函數(shù)有屬性也有方法.
比較重要的4個(gè)屬性arguments , this , length , prototype
arguments 表示當(dāng)前函數(shù)的參數(shù)類數(shù)組,這個(gè)屬性很特殊,他自己還有個(gè)屬性叫callee ,
arguments.callee 屬性保存了一個(gè)指標(biāo),指標(biāo)指向了擁有此arguments 屬性的函數(shù)實(shí)體(也就相當(dāng)於函數(shù)名稱)
this屬性是當(dāng)前環(huán)境,類似與C# 中的this,表示當(dāng)前上下文
length 屬性表示當(dāng)前函數(shù)接收最大參數(shù)個(gè)數(shù)
prototype 表示該函數(shù)的原型,也就是把物件實(shí)例的方法完整的保存下來,換句話說就是原型上的方法都繼承下來了.比如toString() valueOf() 等.
##接下來,我們來看看function函數(shù)種類
普通函數(shù):介紹普通函數(shù)的特性:同名覆寫、arguments物件、預(yù)設(shè)回傳值等。function ShowName(name) { alert(name); }匿名函數(shù):介紹匿名函數(shù)的特性:變數(shù)匿名函數(shù)、無名稱匿名函數(shù)。
//變量匿名函數(shù),左側(cè)可以為變量、事件等 var anonymousNormal = function (p1, p2) { alert(p1+p2); } anonymousNormal(3,6);//輸出9閉包函數(shù):介紹閉包函數(shù)的特性。
function funA() { var i = 0; function funB() { //閉包函數(shù)funB i++; alert(i) } return funB; } var allShowA = funA(); //全局變量引用:累加輸出1,2,3,4等 function partShowA() { var showa = funA();//局部變量引用:只輸出1 showa(); }上面是我整理給大家的,希望未來會(huì)對大家有幫助。 相關(guān)文章:
在Bootstrap4 Vue2中如何實(shí)作分頁查詢
在webpack中有關(guān)於jquery外掛程式的環(huán)境配置(詳細(xì)教程)
以上是在javascript中詳細(xì)解讀Function函數(shù)(詳細(xì)教學(xué))的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

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

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

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

WebSocket與JavaScript:實(shí)現(xiàn)即時(shí)監(jiān)控系統(tǒng)的關(guān)鍵技術(shù)引言:隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,即時(shí)監(jiān)控系統(tǒng)在各個(gè)領(lǐng)域中得到了廣泛的應(yīng)用。而實(shí)現(xiàn)即時(shí)監(jiān)控的關(guān)鍵技術(shù)之一就是WebSocket與JavaScript的結(jié)合使用。本文將介紹WebSocket與JavaScript在即時(shí)監(jiān)控系統(tǒng)中的應(yīng)用,並給出程式碼範(fàn)例,詳細(xì)解釋其實(shí)作原理。一、WebSocket技

如何使用WebSocket和JavaScript實(shí)現(xiàn)線上語音辨識系統(tǒng)引言:隨著科技的不斷發(fā)展,語音辨識技術(shù)已成為了人工智慧領(lǐng)域的重要組成部分。而基於WebSocket和JavaScript實(shí)現(xiàn)的線上語音辨識系統(tǒng),具備了低延遲、即時(shí)性和跨平臺的特點(diǎn),成為了廣泛應(yīng)用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實(shí)現(xiàn)線上語音辨識系

如何利用JavaScript和WebSocket實(shí)現(xiàn)即時(shí)線上點(diǎn)餐系統(tǒng)介紹:隨著網(wǎng)路的普及和技術(shù)的進(jìn)步,越來越多的餐廳開始提供線上點(diǎn)餐服務(wù)。為了實(shí)現(xiàn)即時(shí)線上點(diǎn)餐系統(tǒng),我們可以利用JavaScript和WebSocket技術(shù)。 WebSocket是一種基於TCP協(xié)定的全雙工通訊協(xié)議,可實(shí)現(xiàn)客戶端與伺服器的即時(shí)雙向通訊。在即時(shí)線上點(diǎn)餐系統(tǒng)中,當(dāng)使用者選擇菜餚並下訂單

JavaScript和WebSocket:打造高效的即時(shí)天氣預(yù)報(bào)系統(tǒng)引言:如今,天氣預(yù)報(bào)的準(zhǔn)確性對於日常生活以及決策制定具有重要意義。隨著技術(shù)的發(fā)展,我們可以透過即時(shí)獲取天氣數(shù)據(jù)來提供更準(zhǔn)確可靠的天氣預(yù)報(bào)。在本文中,我們將學(xué)習(xí)如何使用JavaScript和WebSocket技術(shù),來建立一個(gè)高效的即時(shí)天氣預(yù)報(bào)系統(tǒng)。本文將透過具體的程式碼範(fàn)例來展示實(shí)現(xiàn)的過程。 We

如何使用WebSocket和JavaScript實(shí)現(xiàn)線上預(yù)約系統(tǒng)在當(dāng)今數(shù)位化的時(shí)代,越來越多的業(yè)務(wù)和服務(wù)都需要提供線上預(yù)約功能。而實(shí)現(xiàn)一個(gè)高效、即時(shí)的線上預(yù)約系統(tǒng)是至關(guān)重要的。本文將介紹如何使用WebSocket和JavaScript來實(shí)作一個(gè)線上預(yù)約系統(tǒng),並提供具體的程式碼範(fàn)例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進(jìn)行全雙工

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

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個(gè)新的節(jié)點(diǎn)。這個(gè)方法需要兩個(gè)參數(shù):要插入的新節(jié)點(diǎn)和參考節(jié)點(diǎn)(即新節(jié)點(diǎn)將要插入的位置的節(jié)點(diǎn))。

JavaScript中的HTTP狀態(tài)碼取得方法簡介:在進(jìn)行前端開發(fā)中,我們常常需要處理與後端介面的交互,而HTTP狀態(tài)碼就是其中非常重要的一部分。了解並取得HTTP狀態(tài)碼有助於我們更好地處理介面?zhèn)骰氐馁Y料。本文將介紹使用JavaScript取得HTTP狀態(tài)碼的方法,並提供具體程式碼範(fàn)例。一、什麼是HTTP狀態(tài)碼HTTP狀態(tài)碼是指當(dāng)瀏覽器向伺服器發(fā)起請求時(shí),服務(wù)
