国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript中Function類型詳解

2019-11-20 12:35:44
字體:
供稿:網(wǎng)友

Function 類型

  function類型,毋庸置疑是js中相當(dāng)重要的一個(gè)玩意。

  1.這玩意首先是一個(gè)對(duì)象,也就是說它是一個(gè)引用類型。陳述:一聽說是對(duì)象,是不是很有一種它的基類是object對(duì)象錯(cuò)覺感,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ù)的聲明的語法支持:

<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ù),這種

寫法,參數(shù)可以是N個(gè),但是最后一個(gè)參數(shù)視為函數(shù)主體)

為什么說不同,主要在于,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ù)沒有重載?

  這個(gè)問題要從js的語言特性來考慮。在第2條已經(jīng)說了,函數(shù)名稱只是指向函數(shù)對(duì)象的一個(gè)指針。根據(jù)指針的概念去理解就清楚了。

  看代碼示例:

<script>  function fun(n1){   return n1+100;  }  function fun(n1){   return n1+200;  }  console.log(fun(1));// 201     //以上寫法在解析后應(yīng)為    var fun=function(n1){    return n1+100;  }  fun=function(n1){   return n1+200;  }    // fun 的引用被覆蓋了  console.log(fun(1));// 201  </script>

今天就寫到這,都是寫基本概念,希望對(duì)這塊有盲點(diǎn)的起到幫助!有什么需要指正的地方,希望各位霸氣留言指正。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙州县| 津市市| 伊通| 石家庄市| 山西省| 永春县| 称多县| 株洲县| 乌审旗| 贺州市| 云和县| 汕尾市| 丰顺县| 吉安市| 丹凤县| 兰西县| 若羌县| 腾冲县| 民乐县| 手机| 莎车县| 马公市| 内丘县| 定安县| 石狮市| 万盛区| 绍兴县| 青州市| 杂多县| 蕉岭县| 宝鸡市| 宕昌县| 海林市| 佳木斯市| 平果县| 平武县| 措勤县| 临江市| 岳池县| 揭西县| 阜阳市|