精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入 JavaScript 中的默認參數!

開發 前端
在 ES6 中,JS引入了默認函數參數。如果未向函數調用提供實參,則允許開發人員用默認值初始化函數。

[[380694]]

本文已經過原作者 Tania Rascia 授權翻譯

我是小智,今天,我們來講講默認參數。

在 ES6 中,JS引入了默認函數參數。如果未向函數調用提供實參,則允許開發人員用默認值初始化函數。以這種方式初始化函數參數將使函數更容易閱讀,更不易出錯,并為函數提供默認行為。這也幫助我們避免由于傳入未定義的參數和解構不存在的對象而產生的錯誤。

在本文中,我們將學習一下形參和實參之間的區別,了解如何在函數中使用默認形參,了解支持默認形參的其他方法,并了解哪些類型的值和表達式可以用作默認形參。

實參和形參

在解釋默認函數參數之前,重要的是要知道參數的默認值是什么。所以我們先回顧函數中實參和形參之間的區別。

在下面的代碼中,我們創建一個函數,該函數返回一個給定數的立方:

  1. function cube(x) { 
  2.   return x * x * x 

此示例中的x變量是一個參數-傳遞給函數的命名變量,參數必須始終包含在變量中。接著,我們來調用一下這個函數:

  1. cube(10) // 1000 

在這種情況下,10是一個參數—調用時傳遞給函數的值。通常,值也可以用變量,如:

  1. const number = 10 
  2.  
  3. cube(number) // 1000 

如果沒有將參數傳遞該函數,函數將隱式地使用undefined作為默認值:

  1. cube() // NaN 

在本例中,cube()試圖計算undefined * undefined * undefined的值,結果是NaN。

這種自動的行為有時會造成問題。在某些情況下,我們希望參數具有一個值,即使沒有向函數傳遞參數。這就是默認參數特性派上用場的地方。

默認參數語法

如果沒有默認參數,我們就需要顯式檢查undefined的值才能設置默認值,如以下示例所示:

  1. function cube(x) { 
  2.   if (typeof x === 'undefined') { 
  3.     x = 5 
  4.   } 
  5.  
  6.   return x * x * x 
  7.  
  8. cube() 

相反,使用默認參數可以用更少的代碼實現相同的目標。可以通過使用等式賦值運算符(=)為多維數據集中的參數設置默認值,如下所示:

  1. function cube(x = 5) { 
  2.   return x * x * x 

現在,在不帶參數的情況下調用多維數據集函數時,它將為x賦5并返回計算而不是NaN:

傳遞參數時,它仍將按預期運行,而忽略默認值:

  1. cube(2)  // 8 

需要注意的一個地方,默認參數值還將覆蓋作為函數的參數傳遞的undefined ,如下所示:

  1. cube(undefined)  // 125 

這里是使用默認參數 5 來計算的,顯示的傳遞 undefined 會被忽略。

默認參數數據類型任何原始值或對象都可以用作默認參數值。首先,使用 number, string,boolean,object, array和null 作為默認值來設置參數。

  1. const defaultNumber = (number = 42) => console.log(number) 
  2. const defaultString = (string = 'Shark') => console.log(string) 
  3. const defaultBoolean = (boolean = true) => console.log(boolean) 
  4. const defaultObject = (object = { id: 7 }) => console.log(object) 
  5. const defaultArray = (array = [1, 2, 3]) => console.log(array) 
  6. const defaultNull = (nullValue = null) => console.log(nullValue) 

在不帶參數的情況下調用這些函數時,它們都將使用默認值:

  1. defaultNumber()  // 42 
  2. defaultString()  // "Shark" 
  3. defaultBoolean() // true 
  4. defaultObject()  // {id: 7} 
  5. defaultArray()   // (3) [1, 2, 3] 
  6. defaultNull()    // null 

注意,在默認參數中創建的任何對象都將在每次調用函數時創建。默認參數的一個常見用例是使用這種行為從對象中獲取值。如果我們試圖從一個不存在的對象中解構或訪問一個值,它將拋出一個錯誤。但是,如果默認參數是一個空對象,那么它只會給出undefined的值,而不會拋出錯誤。

  1. function settings(options = {}) { 
  2.   const { theme, debug } = options 
  3.  
  4.   // Do something with settings 

這樣避免因解構不存在的對象而導致的錯誤。

現在我們已經看到了默認參數如何與不同的數據類型一起工作,下面我們來看看多個默認參數如何協同工作。

使用多個默認參數

首先,聲明一個帶有多個默認參數的sum()函數

  1. function sum(a = 1, b = 2) { 
  2.   return a + b 
  3.  
  4. sum() // 3 

此外,參數中使用的值可以在任何后續的默認參數中使用,從左到右。例如,這個createUser函數創建了一個用戶對象userObj作為第三個參數,函數本身所做的就是返回userObj和前兩個參數

  1. function createUser(name, rank, userObj = { name, rank }) { 
  2.   return userObj 
  3.  
  4. // Create user 
  5. const user = createUser('前端小智''前端開發'
  6.  
  7. console.log(user) // {name"前端小智", rank: "前端開發"

通常建議將所有默認參數放在參數列表的末尾,以便可以輕松保留可選值。如果首先使用默認參數,則必須顯式傳遞undefined才能使用默認值。

  1. function defaultFirst(a = 1, b) { 
  2.   return a + b 

當調用這個函數時,必須調用帶有兩個參數的defaultFirst():

  1. efaultFirst(undefined, 2)  // 3 

實戰中的事例,下面是一個函數,它的作用是創建一個DOM元素,并添加一個文本標簽和類(如果存在的話)。

  1. function createNewElement(tag, text, classNames = []) { 
  2.   const el = document.createElement(tag) 
  3.   el.textContent = text 
  4.  
  5.   classNames.forEach((className) => { 
  6.     el.classList.add(className) 
  7.   }) 
  8.  
  9.   return el 
  10.  
  11. const greeting = createNewElement('p''Hello!', ['greeting''active']) 

此時 greeting 的值為

  1. <p class="greeting active">Hello!</p> 

 

如果將classNames數組保留在函數調用之外,則該數組仍將起作用。

  1. const greeting2 = createNewElement('p''Hello!'
  2.  
  3. console.log(greeting2) // p>Hello!</p> 

 

函數調用作為默認參數除了原始類型和對象外,調用函數的結果可以用作默認參數。

在下面代碼中,創建一個返回隨機數的函數,然后將結果用作多維數據集函數中的默認參數值:

  1. function getRandomNumber() { 
  2.   return Math.floor(Math.random() * 10) 
  3.  
  4.  
  5. function cube(x = getRandomNumber()) { 
  6.   return x * x * x 

現在每次調用 cube 結果可能都會不一樣:

  1. cube()  // 512 
  2. cube()  // 64 

在以下示例中,將一個隨機數分配給x,該隨機數用作我們創建函數中的參數。然后,y參數將計算數字的立方根,并檢查x和y是否相等:

  1. function doesXEqualY(x = getRandomNumber(), y = Math.cbrt(cube(x))) { 
  2.   return x === y 
  3.  
  4. doesXEqualY() // true 

默認參數甚至可以是函數定義,如本例所示,它將參數定義為內部函數并返回參數的函數調用:

  1. function outer
  2.   parameter = function inner() { 
  3.     return 100 
  4.   } 
  5. ) { 
  6.   return parameter() 
  7.  
  8. // Invoke outer function 
  9. outer() // 100 

總結在本文中,我們了解了什么是默認函數參數以及如何使用它們?,F在,我們可以使用默認參數來幫助保持函數的整潔和易于閱讀。還可以預先將空對象和數組分配給參數,以便在處理從對象中檢索值或遍歷數組等情況時減少復雜性和代碼行數。

我是小智 ,我們下期見!

譯者:前端小智 作者:Tania Rascia 來源:flatlogic.com原文:https://www.taarascia.com/default-parameters-javascript/

本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。

 

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2013-05-24 10:22:07

Python默認參數值

2024-07-18 10:12:04

2017-01-20 08:30:19

JavaScriptfor循環

2020-12-16 09:47:01

JavaScript箭頭函數開發

2010-10-08 14:19:34

JavaScript split()

2023-05-12 08:11:58

JavaScriptJSON克隆

2015-12-24 10:05:39

JavaScripttypeofinstanceof

2010-06-07 16:55:00

JavaScript

2013-11-05 13:29:04

JavaScriptreplace

2022-11-16 14:23:37

JavaScript參數屬性

2010-10-09 10:10:55

JavaScriptFunction對象

2022-09-14 09:37:17

JavaScript默認導出

2022-02-09 11:02:16

JavaScript前端框架

2011-06-03 13:48:18

JavaScript重構

2021-10-17 22:40:51

JavaScript開發 框架

2010-10-08 15:17:47

JavaScriptJava

2021-02-17 11:25:33

前端JavaScriptthis

2015-09-29 08:57:46

javascript對象

2015-12-24 09:48:40

JavaScriptthis指針深

2017-10-10 14:36:07

前端Javascriptapply、call、
點贊
收藏

51CTO技術棧公眾號

欧美伦理一区二区| 91国在线精品国内播放| 中文字幕av一区二区三区人妻少妇| 影音先锋在线播放| 91丨九色丨蝌蚪丨老版| 日韩免费av片在线观看| 波多野结衣欲乱| 午夜视频一区二区在线观看| 午夜不卡av免费| 亚洲欧洲一区二区福利| 成人精品在线播放| 日本欧美一区二区| 欧美劲爆第一页| 成年人看的免费视频| 91蝌蚪精品视频| 欧洲国产伦久久久久久久| 久久香蕉视频网站| 精品影院一区| av电影在线观看不卡| 国产伦精品免费视频| 日本在线观看视频网站| 91视频综合| 亚洲欧美激情一区| www.四虎在线| 韩国一区二区三区视频| 欧美性大战久久| 波多野结衣家庭教师在线| 欧美精品hd| 久久久久久夜精品精品免费| 超碰在线97av| 国产乱码精品一区二区三区精东| 先锋影音久久| 91精品国产高清久久久久久久久| 国产黄色的视频| 成人av国产| 亚洲欧美另类人妖| 99re这里只有| 岛国精品一区| 精品第一国产综合精品aⅴ| 成人av毛片在线观看| 三级成人在线| 色播五月激情综合网| 9久久9毛片又大又硬又粗| 国产福利在线免费观看| 一区二区三区日韩精品| mm131午夜| 久久国产精品一区| 亚洲视频在线一区二区| 亚洲最新免费视频| 麻豆影视在线观看_| 国产精品黄色在线观看| 亚洲一区综合| 色哟哟免费在线观看| 国产精品日韩精品欧美在线| 天堂精品视频| 一区二区三区视频网站| 国产精品嫩草影院av蜜臀| 亚洲春色在线视频| 美女免费久久| 一区二区在线电影| 精品国偷自产一区二区三区| 超碰在线99| 黄色一区二区三区| 欧美日韩在线不卡视频| 日本中文字幕一区二区| 欧美美女激情18p| 色综合五月婷婷| 亚洲一区二区三区免费| 亚洲韩国日本中文字幕| 久久久亚洲av波多野结衣| 亚洲桃色综合影院| 中文字幕在线看视频国产欧美| 一级特黄曰皮片视频| 色综合蜜月久久综合网| 久久久精品免费| 久久精品一区二区三| 亚洲国产1区| 欧美亚洲国产精品| 91av国产精品| 成人小视频免费在线观看| 麻豆av一区二区| 视频一区二区三区不卡| 一区二区三区四区国产精品| 男人靠女人免费视频网站| 香蕉成人影院| 日韩精品一区二区三区视频| 中文字幕在线观看网址| 色综合狠狠操| 国模精品系列视频| 国产男人搡女人免费视频| 国产一区视频导航| 好吊色欧美一区二区三区四区| 国产三级在线| 亚洲自拍偷拍欧美| 中文字幕第21页| 2023国产精华国产精品| 亚洲色在线视频| 欧美成人精品欧美一级私黄| 久久精品亚洲一区二区| 川上优av一区二区线观看| 午夜av免费在线观看| 中文字幕一区二区5566日韩| 国产资源在线视频| 97色婷婷成人综合在线观看| 日韩高清a**址| 丝袜 亚洲 另类 欧美 重口| 天堂成人免费av电影一区| 亚洲xxxx视频| a视频网址在线观看| 亚洲国产精品久久人人爱| 男人插女人下面免费视频| 国产精品丝袜在线播放| 丝袜情趣国产精品| 日韩手机在线视频| 成人高清免费观看| 7777在线视频| 欧美一区二区三区婷婷| 亚洲欧美国产va在线影院| 久久久久香蕉视频| 国内精品伊人久久久久av影院| 欧美亚洲精品日韩| 91九色porn在线资源| 欧美一级二级三级蜜桃| 亚洲ⅴ国产v天堂a无码二区| 亚洲人成人一区二区三区| 91亚洲va在线va天堂va国| 粉嫩av在线播放| 精品久久久免费| 麻豆精品国产传媒av| 一区二区电影在线观看| 国产精品偷伦一区二区| 黄色免费在线播放| 色综合久久久久久久久| 亚洲一区二区三区无码久久| 狠狠爱综合网| 99久久免费国| 免费在线看电影| 日韩美女天天操| 性欧美videos| 国产一区二区福利视频| 亚洲最新免费视频| www.久久久久爱免| 精品国产一区久久久| 一本久道久久综合无码中文| 国产欧美日韩亚州综合| 一区二区成人网| 日韩av大片| 国产日韩中文字幕| 老司机福利在线视频| 欧美男女性生活在线直播观看| 人妻互换一区二区激情偷拍| 美女国产一区二区三区| 亚洲国产成人不卡| 婷婷丁香久久| 欧美国产激情18| 亚洲老妇色熟女老太| 亚洲成人tv网| 中文字幕一二三四区| 日韩在线播放一区二区| 亚洲精品成人三区| av在线成人| 国内精品久久影院| 香蕉av在线播放| 欧美最猛性xxxxx直播| 青青青视频在线播放| 狠狠v欧美v日韩v亚洲ⅴ| 超碰10000| 欧洲亚洲成人| 国产不卡精品视男人的天堂| 色三级在线观看| 8v天堂国产在线一区二区| 久久久久久久久久久久久女过产乱| 国产高清无密码一区二区三区| 97在线国产视频| 欧美亚洲大陆| 国产精品天天狠天天看| 麻豆av在线播放| 亚洲男人天堂2023| 国产精品久久久久精| 亚洲一区国产视频| 国产激情在线免费观看| 狠狠色狠狠色综合系列| 国产免费一区二区视频| 国产精品欧美日韩一区| 亚洲影院污污.| 中老年在线免费视频| 日韩有码视频在线| 黄色三级网站在线观看| 欧洲一区二区av| 九九久久免费视频| 国产欧美精品国产国产专区| 男人操女人下面视频| 美女视频一区免费观看| 影音先锋亚洲视频| 亚洲精品国产setv| 亚洲自拍偷拍视频| 亚洲播播91| 欧美国产日韩在线| 婷婷五月在线视频| 日韩精品在线看| av网站免费大全| 欧美性猛交xxxx黑人交| 日韩手机在线观看| **欧美大码日韩| 中文字幕 自拍| 成人91在线观看| 亚洲男人天堂2021| 日韩高清一区二区| 国产3p露脸普通话对白| 午夜久久免费观看| 日韩亚洲一区在线播放| 高清日韩欧美| 亚洲一区二区三| 美女写真久久影院| 97成人超碰免| 日韩影视在线| 久久精品视频中文字幕| 国产在线高清| 亚洲欧美国产一区二区三区| 好吊色在线观看| 欧美精品777| 啪啪小视频网站| 色噜噜久久综合| 天天干在线播放| 精品久久久久久久久中文字幕 | 精品在线观看入口| 国产日本一区二区三区| 国产精品igao视频网网址不卡日韩| 国产精品wwww| 偷拍精品精品一区二区三区| 欧美一级大胆视频| 自拍偷拍亚洲视频| 2020国产精品视频| 欧美久久天堂| 91高潮精品免费porn| xxx.xxx欧美| 久久久人成影片一区二区三区观看 | 日韩av片在线播放| 亚洲一区二区在线视频| 欧美日韩精品一区二区三区视频播放| 国产精品久久久久四虎| 国产7777777| 国产精品蜜臀av| 最新黄色av网址| 日韩理论片中文av| 青草影院在线观看| 一区二区三区成人| 久草免费在线观看视频| 亚洲午夜视频在线观看| 九九视频在线免费观看| 亚洲一区二区三区不卡国产欧美| 日韩激情综合网| 一区二区三区丝袜| 日韩aaaaaa| 色婷婷av一区二区三区之一色屋| 五月天婷婷导航| 欧美午夜精品一区| 7777久久亚洲中文字幕| 日韩美女视频一区二区在线观看| 东京干手机福利视频| 精品国产三级a在线观看| 深爱五月激情五月| 日韩理论片久久| 阿v免费在线观看| 精品精品国产国产自在线| 91网在线看| 91成人福利在线| 国产亚洲一区二区手机在线观看| 成人福利视频网| 999久久精品| 日本免费高清一区| 外国成人激情视频| 成人免费观看在线| 久久不射网站| 中文字幕日韩综合| av资源网一区| 久久久久久国产免费a片| 亚洲特黄一级片| 日韩男人的天堂| 欧美一a一片一级一片| av中文在线观看| 亚洲精品小视频| 岛国中文字幕在线| 欧美在线视频播放| 99久热在线精品视频观看| 精品一区二区久久久久久久网站| 欧美日韩水蜜桃| 男人添女荫道口女人有什么感觉| 久久精品亚洲| 美国黄色一级视频| 欧美激情一区二区三区| 色哟哟一一国产精品| 性做久久久久久久免费看| 中文字幕av无码一区二区三区| 欧美一级国产精品| 国产三级在线免费观看| 久久久天堂国产精品女人| 日本一区免费网站| 岛国视频一区免费观看| 色777狠狠狠综合伊人| 亚洲熟妇av日韩熟妇在线| 国产在线播精品第三| 国产aⅴ激情无码久久久无码| 亚洲精品一二三四区| 欧美亚洲另类小说| 亚洲精品一区二区三区99| 最近高清中文在线字幕在线观看| 97视频在线观看成人| 韩国一区二区三区视频| 亚洲国产精品一区在线观看不卡 | 国产高清一区| 国产二区视频在线播放| 国产一区二区影院| 精品一区二区三区蜜桃在线| 精品magnet| 亚洲国产成人精品一区二区三区| xvideos亚洲| 亚洲日本在线观看视频| 蜜桃导航-精品导航| 亚洲成色精品| 色综合久久久无码中文字幕波多| 国产精品久久一级| 国产乱码77777777| 精品亚洲一区二区三区在线播放 | 亚洲女人毛茸茸高潮| 欧美性高潮床叫视频| 噜噜噜久久,亚洲精品国产品| 精品国产一区二区三区四区在线观看| 成人直播视频| 久久99蜜桃综合影院免费观看| 亚洲欧美综合国产精品一区| 夜夜夜夜夜夜操| 国产精品美女久久久久久久久久久 | 亚洲伊人第一页| 久久精品欧美一区| 看看黄色一级片| 亚洲视频免费在线观看| 国产精品国产av| 久久综合久久八八| 国产精品美女久久久久人| 中文字幕免费高| 国产一区二区不卡在线| 日韩女优一区二区| 欧美成人精品1314www| 手机在线免费看av| 国产精品日韩欧美一区二区| 欧美日韩四区| 欧美做受高潮中文字幕| 亚洲成a人v欧美综合天堂下载 | 亚洲成在人线免费观看| 少妇性饥渴无码a区免费| 99久久99久久精品国产片果冻 | 免费国产一区二区| 久久激情久久| 亚洲欧美va天堂人熟伦| 欧美日韩免费不卡视频一区二区三区 | 国产精品熟女久久久久久| 久久深夜福利免费观看| 免费精品一区二区三区在线观看| 国产肉体ⅹxxx137大胆| av在线一区二区三区| av一级在线观看| 日韩在线视频播放| 玖玖玖电影综合影院| 中国丰满熟妇xxxx性| 2023国产精品| 中文字幕一区二区三区四区免费看| 日韩中文字幕不卡视频| 日韩一区二区三区色| 男女高潮又爽又黄又无遮挡| 欧美激情一二三区| 国产av一区二区三区精品| 高清亚洲成在人网站天堂| 国产欧美一区二区精品久久久| 亚洲精品视频导航| 亚洲最新在线观看| 免费a级毛片在线观看| 成人激情视频小说免费下载| 影音先锋中文字幕一区| 性欧美一区二区| 欧美电影影音先锋| 毛片在线网站| 亚洲一区二区三区涩| 成人黄色国产精品网站大全在线免费观看| 手机看片久久久| 插插插亚洲综合网| 香蕉久久夜色精品国产更新时间 | 男人的天堂av网站| 久久亚洲精品一区| 亚洲区小说区图片区qvod按摩| 日韩av一卡二卡三卡| 欧美性色19p| 1区2区3区在线视频| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 福利在线一区二区| 国产欧美一区视频| 免费观看成年人视频| 成人国产精品色哟哟| 美女久久网站| 国产福利久久久|