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

首頁(yè) > 開(kāi)發(fā) > JS > 正文

ES6基礎(chǔ)之默認(rèn)參數(shù)值

2024-05-06 16:48:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

如果調(diào)用函數(shù)的過(guò)程中,定義的參數(shù)缺失,此參數(shù)變量的值則會(huì)是undefined。怎么給缺失的參數(shù)賦值默認(rèn)值,在ES6之前,沒(méi)有簡(jiǎn)潔的語(yǔ)法設(shè)置缺失參數(shù)的默認(rèn)值,但是我們一般可以這么編寫(xiě)代碼解決缺失參數(shù)默認(rèn)值:

function myFunction(x, y, z) { x = x === undefined ? 1 : x; y = y === undefined ? 2 : y; z = z === undefined ? 3 : z; console.log(x, y, z); //Output "6 7 3" } myFunction(6, 7);

這種寫(xiě)法是不是比較麻煩?默認(rèn)值的設(shè)置是不是不夠直觀?在ES6中,我們可以用更簡(jiǎn)潔的語(yǔ)法進(jìn)行實(shí)現(xiàn),通過(guò)本篇文章你將學(xué)習(xí)到以下內(nèi)容:

  • 使用ES6語(yǔ)法聲明參數(shù)默認(rèn)
  • 值使用undefined傳
  • 參參數(shù)運(yùn)算

使用ES6語(yǔ)法聲明參數(shù)默認(rèn)值

我們可以使用ES6簡(jiǎn)潔的語(yǔ)法,如下示例進(jìn)行聲明函數(shù)參數(shù)的默認(rèn)值:

function myFunction(x = 1, y = 2, z = 3) { console.log(x, y, z); }myFunction(6,7); // Outputs 6 7 3

在上述代碼示例中,我們?cè)谡{(diào)用此函數(shù)中傳遞了前兩個(gè)參數(shù),因此參數(shù)的默認(rèn)值(即x=1和y=2)將會(huì)被覆蓋(即x=6和y=7)。由于第三個(gè)參數(shù)缺省,因此z使用默認(rèn)值,將會(huì)是3。

使用undefined傳參

如果我們想讓具體某個(gè)參數(shù)使用默認(rèn)值,我們可以使用undefined進(jìn)行賦值,如下段代碼所示:

function myFunction(x = 1, y = 2, z = 3) { console.log(x, y, z); // Outputs "1 7 9" } myFunction(undefined,7,9);

是不是很簡(jiǎn)單,只需要使用undefined,我們就可以指定具體某個(gè)參數(shù)使用默認(rèn)值。

參數(shù)運(yùn)算

在ES6中我們不僅可以給參數(shù)默認(rèn)賦值具體的數(shù)值,同時(shí)參數(shù)賦值支持參數(shù)的邏輯運(yùn)算進(jìn)行賦值,如下段代碼所示:

function myFunction(x = 1, y = 2, z = x + y) { console.log(x, y, z); // Output "6 7 13" } myFunction(6,7);

在上述代碼中,我們只傳入了前兩個(gè)參數(shù),第三個(gè)參數(shù)缺省,第三個(gè)參數(shù)的值默認(rèn)值是則會(huì)是前兩個(gè)參數(shù)之和。

小節(jié)

今天的內(nèi)容就到這里,當(dāng)我們?cè)陂_(kāi)發(fā)一些工程應(yīng)用通用組件時(shí),都需要暴露一些接口以供使用。而這些接口的友好性是決定這個(gè)組件質(zhì)量的一大指標(biāo),其中參數(shù)缺省值(默認(rèn)值)的完善程度同時(shí)也影響接口的友好性,感謝ES6能讓我們用如此簡(jiǎn)介的語(yǔ)法設(shè)置參數(shù)的缺省值。

與解構(gòu)賦值默認(rèn)值結(jié)合使用

這里有兩種寫(xiě)法需要區(qū)分一下:

function m1({x=0,y=0} = {}){  return [x,y];}function m2({x,y} = {x:0,y:0}){  return [x,y];}m1({x:3});//[3,0]m2({x:3});//[3,undefined]m1({});//[0,0]m2({});//[undefined,undefined]

參數(shù)默認(rèn)值的位置

通常情況下,定義了默認(rèn)值的參數(shù)應(yīng)該是函數(shù)的尾參數(shù)。因?yàn)檫@樣比較容易看出,到底省略了哪些參數(shù),如果非尾部的參數(shù)設(shè)置默認(rèn)值,實(shí)際上這個(gè)參數(shù)是無(wú)法省略的。 

如果有默認(rèn)值的參數(shù)都不是尾參數(shù),這時(shí),無(wú)法只省略該參數(shù)而不省略其后的參數(shù),除非顯示輸入undefined。如果傳入undefined,那么就會(huì)觸發(fā)默認(rèn)值,但是null沒(méi)有這個(gè)效果。

函數(shù)的length屬性 

如果函數(shù)指定了默認(rèn)值后,函數(shù)的length屬性就不會(huì)包含有默認(rèn)值的參數(shù)。這是因?yàn)閘ength屬性的含義是,該函數(shù)預(yù)期傳入的參數(shù)個(gè)數(shù),某個(gè)參數(shù)指定默認(rèn)值之后,預(yù)期傳入的參數(shù)個(gè)數(shù)就不包括這個(gè)參數(shù)了,同理,rest參數(shù)也不會(huì)計(jì)入length屬性。 

函數(shù)參數(shù)默認(rèn)值的類(lèi)型 

(1)變量 
如果函數(shù)參數(shù)的默認(rèn)值是一個(gè)變量,則該變量所處的作用域和其他變量的作用域規(guī)則相同,即是先前函數(shù)的作用域,然后再是全局作用域。 

(2)函數(shù) 
如果函數(shù)A的參數(shù)默認(rèn)值是函數(shù)B,那么由于函數(shù)的作用域是其聲明的時(shí)候所在的作用域,函數(shù)B的作用域就在全局作用域而不是函數(shù)A的作用域。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳原县| 荔波县| 荆门市| 青河县| 阳朔县| 化德县| 涞水县| 涟水县| 河间市| 荥经县| 益阳市| 登封市| 巨野县| 博乐市| 佛冈县| 鄄城县| 唐海县| 漳浦县| 新乡市| 吉首市| 广河县| 句容市| 阿勒泰市| 濉溪县| 西华县| 芦溪县| 方山县| 泰州市| 贡觉县| 博客| 额尔古纳市| 绥江县| 柏乡县| 瑞昌市| 平潭县| 雷州市| 长武县| 类乌齐县| 聂拉木县| 中方县| 女性|