javascript中Function類型詳解
Function 類型
function類型,毋庸置疑是js中相當(dāng)重要的一個(gè)玩意。
1.這玩意首先是一個(gè)對(duì)象,也就是說(shuō)它是一個(gè)引用類型。陳述:一聽(tīng)說(shuō)是對(duì)象,是不是很有一種它的基類是object對(duì)象錯(cuò)覺(jué)感,No,
它和object是獨(dú)立的2個(gè)東西。當(dāng)你typeof function 時(shí),返回的是 funciton 并非 object
2.每個(gè)函數(shù)都是 Function 對(duì)象的一個(gè)實(shí)例,它與其他引用對(duì)象一樣具有屬性和方法。由于它是對(duì)象所以函數(shù)名是指向函數(shù)對(duì)象的指針
關(guān)于函數(shù)的聲明的語(yǔ)法支持:
<script> //方式1 function fun(num1,num2){ return num1+num2; } //方式2 var fun=function(num1,num2){ return num1+num2; }; //方式3 var fun=new Function("n1","n2","return n1+n2"); </script>
講解:3種方式都能完成一個(gè)函數(shù)的聲明,但各有不同。
方式1 理解為 一個(gè)函數(shù)的聲明,方式2,方式3理解為函數(shù)表達(dá)式。(方式3不推薦使用,原因會(huì)導(dǎo)致解析2次代碼,先解釋常規(guī)ECMAScript代碼,在解釋傳入的參數(shù),這種
寫(xiě)法,參數(shù)可以是N個(gè),但是最后一個(gè)參數(shù)視為函數(shù)主體)
為什么說(shuō)不同,主要在于,js解析器對(duì)函數(shù)聲明 和 函數(shù)表達(dá)式 解析的不同。解析器會(huì)優(yōu)先讀取函數(shù)申明,js引擎在執(zhí)行時(shí)會(huì)將函數(shù)聲明自動(dòng)放到執(zhí)行環(huán)境的最頂端。
而函數(shù)表達(dá)式則不同,當(dāng)執(zhí)行到函數(shù)表達(dá)式時(shí),才會(huì)真正去被解釋執(zhí)行。關(guān)于這點(diǎn)理解很重要!
看代碼
<script> console.log(typeof fun); //"function" console.log(typeof fun2); //"undefined" console.log(typeof fun3); //"undefined" function fun(n1,n2){ return n1+n2; } var fun2=function(n1,n2){ return n1+n2; } var fun3=new Function("n1","n2","return n1+n2;"); </script>
3.為什么函數(shù)沒(méi)有重載?
這個(gè)問(wèn)題要從js的語(yǔ)言特性來(lái)考慮。在第2條已經(jīng)說(shuō)了,函數(shù)名稱只是指向函數(shù)對(duì)象的一個(gè)指針。根據(jù)指針的概念去理解就清楚了。
看代碼示例:
<script> function fun(n1){ return n1+100; } function fun(n1){ return n1+200; } console.log(fun(1));// 201 //以上寫(xiě)法在解析后應(yīng)為 var fun=function(n1){ return n1+100; } fun=function(n1){ return n1+200; } // fun 的引用被覆蓋了 console.log(fun(1));// 201 </script>
今天就寫(xiě)到這,都是寫(xiě)基本概念,希望對(duì)這塊有盲點(diǎn)的起到幫助!有什么需要指正的地方,希望各位霸氣留言指正。
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- JavaScript Function函數(shù)類型介紹
- 詳解JavaScript中常用的函數(shù)類型
- Javascript 判斷函數(shù)類型完美解決方案
- js中判斷Object、Array、Function等引用類型對(duì)象是否相等
- js Function類型
- 深入淺析JavaScript中的Function類型
- JavaScript基礎(chǔ)篇(3)之Object、Function等引用類型
- 詳解JavaScript基礎(chǔ)知識(shí)(JSON、Function對(duì)象、原型、引用類型)
- JavaScript引用類型Function實(shí)例詳解
- javascript function(函數(shù)類型)使用與注意事項(xiàng)小結(jié)
相關(guān)文章
Javascript編寫(xiě)俄羅斯方塊思路及實(shí)例
本文主要給大家介紹的是使用javascript編寫(xiě)俄羅斯方塊小游戲的思路和具體的實(shí)例代碼,有需要的小伙伴可以參考下2015-07-07第一次記錄Bootstrap table學(xué)習(xí)筆記(1)
這篇文章主要為大家介紹了第一次學(xué)習(xí)Bootstrap table表格插件的筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05JS實(shí)現(xiàn)盒子跟著鼠標(biāo)移動(dòng)及鍵盤(pán)方向鍵控制盒子移動(dòng)效果示例
這篇文章主要介紹了JS實(shí)現(xiàn)盒子跟著鼠標(biāo)移動(dòng)及鍵盤(pán)方向鍵控制盒子移動(dòng)效果,涉及javascript事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-01-01JavaScript判斷當(dāng)前時(shí)間是在某個(gè)時(shí)間點(diǎn)之前/之后
本文主要介紹了JavaScript判斷當(dāng)前時(shí)間是在某個(gè)時(shí)間點(diǎn)之前/之后,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07關(guān)于moment.js的常用方法及使用說(shuō)明
這篇文章主要介紹了關(guān)于moment.js的常用方法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12