成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript 函數(shù)的定義

mudiyouyou / 2274人閱讀

摘要:關(guān)鍵詞必須是小寫(xiě)的,并且必須以與函數(shù)名稱(chēng)相同的大小寫(xiě)來(lái)調(diào)用函數(shù)。當(dāng)調(diào)用函數(shù)時(shí),這些標(biāo)識(shí)符則指代傳入函數(shù)的實(shí)參。函數(shù)表達(dá)式其實(shí)是忽略函數(shù)名稱(chēng)的,并且不可以使用函數(shù)名這種形式調(diào)用函數(shù)。注意構(gòu)造函數(shù)無(wú)法指定函數(shù)名稱(chēng),它創(chuàng)建的是一個(gè)匿名函數(shù)。

一、關(guān)于函數(shù)

JavaScript函數(shù)是指一個(gè)特定代碼塊,可能包含多條語(yǔ)句,可以通過(guò)名字來(lái)供其他語(yǔ)句調(diào)用以執(zhí)行函數(shù)包含的代碼語(yǔ)句。

比如我們有一個(gè)特定的功能需要三條語(yǔ)句實(shí)現(xiàn)

那么每次想實(shí)現(xiàn)這個(gè)功能的時(shí)候就需要寫(xiě)這三句話,很麻煩,我們可以把這三條語(yǔ)句打包為一個(gè)函數(shù)

這樣每次想實(shí)現(xiàn)功能的時(shí)候我們就調(diào)用一下函數(shù)就可以了,調(diào)用函數(shù)通過(guò)函數(shù)名稱(chēng)()的形式調(diào)用

二、聲明方式
ECMA規(guī)范只明確了一點(diǎn):函數(shù)聲明必須帶有標(biāo)示符(Identifier)(就是大家常說(shuō)的函數(shù)名稱(chēng)),而函數(shù)表達(dá)式則可以省略這個(gè)標(biāo)示符。
2.1 規(guī)則

(1)函數(shù)聲明只能出現(xiàn)在 程序或函數(shù)體內(nèi)。從句法上講,它們不能出現(xiàn)在 Block(塊)({ ... })中,例如不能出現(xiàn)在 if、while 或 for 語(yǔ)句中。因?yàn)?Block(塊)中只能包含Statement語(yǔ)句, 而不能包含函數(shù)聲明這樣的源元素。

(2)另一方面,仔細(xì)看一看規(guī)則也會(huì)發(fā)現(xiàn),唯一可能讓表達(dá)式出現(xiàn)在Block(塊)中情形,就是讓它作為表達(dá)式語(yǔ)句的一部分。但是,規(guī)范明確規(guī)定了表達(dá)式語(yǔ)句不能以關(guān)鍵字function開(kāi)頭。而這實(shí)際上就是說(shuō),函數(shù)表達(dá)式同樣也不能出現(xiàn)在Statement語(yǔ)句或Block(塊)中(因?yàn)锽lock(塊)就是由Statement語(yǔ)句構(gòu)成的)。

三、函數(shù)聲明(function 命令) 3.1 示例

上面的代碼命名了一個(gè)job函數(shù),以后使用job()這種形式,就可以調(diào)用相應(yīng)的代碼。這叫做函數(shù)的聲明(Function Declaration)。

3.2 注意

(1)JavaScript 對(duì)大小寫(xiě)敏感。關(guān)鍵詞 function 必須是小寫(xiě)的,并且必須以與函數(shù)名稱(chēng)相同的大小寫(xiě)來(lái)調(diào)用函數(shù)。

(2)funcname是要聲明的函數(shù)名稱(chēng)的標(biāo)識(shí)符。函數(shù)名之后的圓括號(hào)中是參數(shù)列表,參數(shù)之間使用逗號(hào)分隔。當(dāng)調(diào)用函數(shù)時(shí),這些標(biāo)識(shí)符則指代傳入函數(shù)的實(shí)參。

(3)function語(yǔ)句里的花括號(hào)必需的,這和while循環(huán)和其他一些語(yǔ)句所使用的語(yǔ)句塊是不同的,即使函數(shù)體內(nèi)只包含一條語(yǔ)句,仍然必須使用花括號(hào)將其括起來(lái)。

四、函數(shù)表達(dá)式 (變量賦值) 4.1 定義
不以function開(kāi)頭的函數(shù)語(yǔ)句就是函數(shù)表達(dá)式。
4.2 匿名函數(shù)表達(dá)式

以表達(dá)式方式定義的函數(shù),函數(shù)的名稱(chēng)是可選的,下面是匿名函數(shù)的一個(gè)例子,也就是函數(shù)沒(méi)有名字

這種形式看起來(lái)好像是常規(guī)的變量賦值語(yǔ)句,即創(chuàng)建一個(gè)函數(shù)并將它賦值給變量myFunction。這種情況下創(chuàng)建的函數(shù)叫做匿名函數(shù)。因?yàn)閒unction關(guān)鍵字后面沒(méi)有標(biāo)識(shí)符。

4.3 命名函數(shù)表達(dá)式

當(dāng)然function命令后面也可帶有函數(shù)名,下面是在定義時(shí)為函數(shù)命名的例子

(1)命名函數(shù)表達(dá)式的好處是當(dāng)我們遇到錯(cuò)誤時(shí),堆棧跟蹤會(huì)顯示函數(shù)名,容易尋找錯(cuò)誤。

(2)函數(shù)表達(dá)式其實(shí)是“忽略函數(shù)名稱(chēng)的,并且不可以使用函數(shù)名()這種形式調(diào)用函數(shù)。

4.4 被括號(hào)括住的(function foo(){})

這種函數(shù)表達(dá)式不太常見(jiàn),他是表達(dá)式的原因是因?yàn)槔ㄌ?hào) ()是一個(gè)分組操作符,它的內(nèi)部只能包含表達(dá)式。

4.5 注意

(1)函數(shù)表達(dá)式不會(huì)放到開(kāi)頭,所以不能在定義之前調(diào)用

(2)若命名函數(shù)表達(dá)式(加上函數(shù)名),則函數(shù)名只在函數(shù)體內(nèi)部有效,在函數(shù)體外部無(wú)效。

上面代碼在函數(shù)表達(dá)式中,加入了函數(shù)名 x。這個(gè) x 只在函數(shù)體內(nèi)部可用,指代函數(shù)表達(dá)式本身,其他地方都不可用。這種寫(xiě)法的用處有兩個(gè),一是可以在函數(shù)體內(nèi)部調(diào)用自身,二是方便除錯(cuò)(除錯(cuò)工具顯示函數(shù)調(diào)用棧時(shí),將顯示函數(shù)名,而不再顯示這里是一個(gè)匿名函數(shù))。

(3)下面的形式聲明函數(shù)也非常常見(jiàn)。

需要注意的是,函數(shù)的表達(dá)式需要在語(yǔ)句的結(jié)尾加上分號(hào),表示語(yǔ)句結(jié)束。而函數(shù)的聲明在結(jié)尾的大括號(hào)后面不用加分號(hào)。

五、函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別 5.1 說(shuō)明

(1)如果不聲明函數(shù)名稱(chēng),他肯定是表達(dá)式。

(2)若聲明了函數(shù)名稱(chēng),可通過(guò)上下文來(lái)區(qū)分的,如果function test(){}是作為賦值表達(dá)式的一部分的話,那它就是一個(gè)函數(shù)表達(dá)式,如果function test(){}被包含在一個(gè)函數(shù)體內(nèi),或者位于程序的最頂部的話,那它就是一個(gè)函數(shù)聲明。

(4)函數(shù)聲明會(huì)在任何表達(dá)式被解析和求值之前先被解析和求值,即使你的聲明在代碼的最后一行,它也會(huì)在同作用域內(nèi)第一個(gè)表達(dá)式之前被解析/求值。

函數(shù)fn是在alert之后聲明的,但是在alert執(zhí)行的時(shí)候,fn已經(jīng)有定義了。

(5)函數(shù)聲明在條件語(yǔ)句內(nèi)雖然可以用,但是沒(méi)有被標(biāo)準(zhǔn)化,也就是說(shuō)不同的環(huán)境可能有不同的執(zhí)行結(jié)果,所以這樣情況下,最好使用函數(shù)表達(dá)式。

六、Function 構(gòu)造函數(shù) 6.1 示例

(1)下面代碼中,F(xiàn)unction構(gòu)造函數(shù)接受三個(gè)參數(shù),除了最后一個(gè)參數(shù)是sum函數(shù)的“函數(shù)體”,其他參數(shù)都是add函數(shù)的參數(shù)。

(2)可以傳遞任意數(shù)量的參數(shù)給Function構(gòu)造函數(shù),只有最后一個(gè)參數(shù)會(huì)被當(dāng)做函數(shù)體,如果只有一個(gè)參數(shù),該參數(shù)就是函數(shù)體。

6.2 注意

(1)Function構(gòu)造函數(shù)無(wú)法指定函數(shù)名稱(chēng),它創(chuàng)建的是一個(gè)匿名函數(shù)

(2)把Function的構(gòu)造函數(shù)當(dāng)作函數(shù)一樣調(diào)用(不使用new操作符)的效果與作為Function的構(gòu)造函數(shù)調(diào)用一樣。

(3)從技術(shù)上講,這是一個(gè)函數(shù)表達(dá)式。但不推薦使用,因?yàn)檫@種語(yǔ)法會(huì)導(dǎo)致解析兩次代碼。第一次是解析常規(guī)javascript代碼,第二次解析傳入構(gòu)造函數(shù)中的字符串,影響性能。

閱讀更多

參考文章 深入理解JavaScript系列(2):揭秘命名函數(shù)表達(dá)式

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/93948.html

相關(guān)文章

  • 深入理解JavaScript,這一篇就夠了

    摘要:也就是說(shuō),所有的函數(shù)和構(gòu)造函數(shù)都是由生成,包括本身。如果只考慮構(gòu)造函數(shù)和及其關(guān)聯(lián)的原型對(duì)象,在不解決懸念的情況下,圖形是這樣的可以看到,每一個(gè)構(gòu)造函數(shù)和它關(guān)聯(lián)的原型對(duì)象構(gòu)成一個(gè)環(huán),而且每一個(gè)構(gòu)造函數(shù)的屬性無(wú)所指。 前言  JavaScript 是我接觸到的第二門(mén)編程語(yǔ)言,第一門(mén)是 C 語(yǔ)言。然后才是 C++、Java 還有其它一些什么。所以我對(duì) JavaScript 是非常有感情的,畢...

    villainhr 評(píng)論0 收藏0
  • JavaScript基礎(chǔ)知識(shí)

    摘要:用和包裹的內(nèi)容,稱(chēng)為字符串。關(guān)系運(yùn)算符用于進(jìn)行比較的運(yùn)算符。強(qiáng)制依賴(lài)于,非強(qiáng)制依賴(lài)于。使用場(chǎng)合全局環(huán)境構(gòu)造函數(shù)對(duì)象的方法閉包閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù)。所有全局對(duì)象函數(shù)以及變量均自動(dòng)成為對(duì)象的成員。 1 什么是JavaScript JavaScript一種直譯式腳本語(yǔ)言,一種基于對(duì)象和事件驅(qū)動(dòng)并具有安全性的客戶端腳本語(yǔ)言;也是一種廣泛應(yīng)用客戶端web開(kāi)發(fā)的腳本語(yǔ)言。...

    Code4App 評(píng)論0 收藏0
  • JavaScript核心語(yǔ)法——函數(shù)

    摘要:定義函數(shù)與調(diào)用函數(shù)定義函數(shù)時(shí),函數(shù)體的內(nèi)容時(shí)不會(huì)被執(zhí)行。調(diào)用函數(shù)才會(huì)真正執(zhí)行這些。簡(jiǎn)單來(lái)說(shuō),就是調(diào)用函數(shù)時(shí)使用的參數(shù)就是實(shí)參。 函數(shù) 函數(shù)的概念 函數(shù)式什么?函數(shù)是一段JavaScript中的一段代碼,它只能定義一次,但是可能被執(zhí)行或調(diào)用多次。簡(jiǎn)單來(lái)說(shuō),函數(shù)就是一組可重用的代碼,可以在程序的任何地方調(diào)用他。 定義函數(shù)與調(diào)用函數(shù) 定義函數(shù)時(shí),函數(shù)體的內(nèi)容時(shí)不會(huì)被執(zhí)行。定義一個(gè)函數(shù)并不會(huì)自...

    NervosNetwork 評(píng)論0 收藏0
  • javascript技術(shù)難點(diǎn)(三)之this、new、apply和call詳解

    摘要:第四點(diǎn)也要著重講下,記住構(gòu)造函數(shù)被操作,要讓正常作用最好不能在構(gòu)造函數(shù)里 4) this、new、call和apply的相關(guān)問(wèn)題 講解this指針的原理是個(gè)很復(fù)雜的問(wèn)題,如果我們從javascript里this的實(shí)現(xiàn)機(jī)制來(lái)說(shuō)明this,很多朋友可能會(huì)越來(lái)越糊涂,因此本篇打算換一個(gè)思路從應(yīng)用的角度來(lái)講解this指針,從這個(gè)角度理解this指針更加有現(xiàn)實(shí)意義。 下面我們看看在ja...

    ghnor 評(píng)論0 收藏0
  • 10分鐘了解Javascript-天碼營(yíng)

    摘要:然后將構(gòu)造函數(shù)的原型設(shè)為,便實(shí)現(xiàn)了對(duì)象繼承。首先,我們定義一個(gè)構(gòu)造函數(shù),并在其中定義一個(gè)局部變量。這里的是局部變量,其作用域仍然存在是閉包現(xiàn)象,而非對(duì)象屬性。 Javascript是動(dòng)態(tài)的,弱類(lèi)型的,解釋執(zhí)行的程序設(shè)計(jì)語(yǔ)言。 Javascript極其靈活,支持多種程序設(shè)計(jì)范式:面向?qū)ο蟆⒅噶钍?、函?shù)式。JavaSCript最初被用于瀏覽器腳本,現(xiàn)在已經(jīng)是所有主流瀏覽器的默認(rèn)腳本語(yǔ)言。瀏...

    trigkit4 評(píng)論0 收藏0
  • JavaScript函數(shù)與作用域

    摘要:函數(shù)函數(shù)是什么函數(shù)是這樣的一段代碼它只定義一次但可能被執(zhí)行或調(diào)用多次簡(jiǎn)單來(lái)說(shuō)函數(shù)就是一組可重用的代碼可以在程序的任何地方調(diào)用定義函數(shù)函數(shù)聲明方式定義函數(shù)時(shí)函數(shù)體的內(nèi)容是不會(huì)被執(zhí)行的這是一個(gè)函數(shù)字面量直接量方式這是一個(gè)函數(shù)調(diào)用函數(shù)定義一個(gè)函數(shù) 函數(shù) 函數(shù)是什么 函數(shù)是這樣的一段JavaScript代碼 它只定義一次 但可能被執(zhí)行或調(diào)用多次簡(jiǎn)單來(lái)說(shuō) 函數(shù)就是一組可重用的代碼 可以在程序的任...

    jayce 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<