輕鬆學習 JavaScript——第 3 部分:函式中的預設引數
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
JavaScript函式可以有預設引數值。通過預設函式引數,你可以初始化帶有預設值的正式引數。如果不初始化具有某些值的引數,則該引數的預設值為undefined。
請看下列程式碼:
function foo(num1){ console.log(num1); } foo();
在呼叫函式foo時,你沒有傳遞任何引數,因此變數num1的預設值設定為undefined。但是,有時你可能需要設定預設值而非undefined。過去,最好的策略是測試引數值undefined,然後分配一個值。所以,在上面的例子中,如果你想要將num1的預設值設定為9,那麼你可以按照以下程式碼所示的方式做:
function foo(num1) { if (num1 === undefined) { num1 = 9; } console.log(num1); } foo();
ECMAScript 6引入了函式的預設引數。使用ECMA 2015的預設引數功能,你將不再需要檢查未定義的引數值。現在,你可以將9設定為引數本身的預設值。你可以重寫上述函式以使用預設值,如下所示:
function foo(num1 =9) { console.log(num1); } foo();
對於函式foo,如果num1引數的值未被傳遞,那麼JavaScript將設定9作為num1的預設值。
檢查未定義的引數
即使你在呼叫函式時明確地傳遞undefined作為引數值,引數值也將設定為預設值。
function foo(num1 =9) { console.log(num1); } foo(undefined);
在上面的程式碼中,你傳遞undefined為num1的值;因此,num1的值將被設定為預設值9。
執行時計算預設值
JavaScript函式預設值在執行時計算。為了更好地理解這一點,請看以下程式碼:
function foo(value = koo()) { return value; } function koo() { return "Ignite UI"; } var a = foo(); console.log(a);
在函式foo中,引數值的預設值設定為函式koo。在執行時呼叫函式foo時,將計算函式koo。呼叫foo函式後,你會得到如下圖所示的輸出(在這個例子中,我們使用了Ignite UI框架)。
重用預設引數
預設引數可供之後的預設引數使用。請看下列程式碼:
function foo(num1 = 9, num2 = num1 + 8){ console.log(num2); } foo();
在上面的程式碼中,使用num1的預設值來計算num2的預設值。呼叫函式foo時將得到以下輸出:
結論
JavaScript預設引數在編寫函式時非常有用。在呼叫函式時,如果缺少引數,則預設引數功能允許你為函式引數分配預設值,而不是將其定義為undefined。
系列目錄
輕鬆學習 JavaScript——第 1 部分:瞭解 let 語句
輕鬆學習 JavaScript——第 2 部分:函式中的 Rest 引數
輕鬆學習 JavaScript——第 3 部分:函式中的預設引數
輕鬆學習 JavaScript——第 4 部分:函式中的 arguments 物件
輕鬆學習 JavaScript——第 5 部分:簡化函式提升
輕鬆學習 JavaScript——第 6 部分:JavaScript 箭頭函式
輕鬆學習 JavaScript——第 7 部分:物件屬性描述符
輕鬆學習 JavaScript——第 8 部分:JavaScript 中的類
譯文連結:http://www.codeceo.com/article/easy-javascript-03-default-param.html
英文原文:Easy JavaScript Part 3: What Is a Default Parameter in a Function?
翻譯作者:碼農網 – 小峰
[ 轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]
相關文章
- 學會JavaScript函數語言程式設計(第3部分)JavaScript函數程式設計
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 學會JavaScript函數語言程式設計(第2部分)JavaScript函數程式設計
- TypeScript 函式可選引數和預設引數TypeScript函式
- ES6語法學習筆記之函式預設引數筆記函式
- 怎麼輕鬆學習JavaScriptJavaScript
- Javascript函式引數求值——Thunk函式JavaScript函式
- C++行內函數、函式過載與函式預設引數C++函數函式
- JavaScript學習第三天(函式的定義,引數,閉包)JavaScript函式
- JavaScript函式傳遞引數JavaScript函式
- 預設建構函式學習函式
- 物聯網學習教程—函式引數和函式的值函式
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- 第 8 節:函式-函式定義和引數函式
- 學習javaScript必知必會(1)~js介紹、函式、匿名函式、自呼叫函式、不定長引數JavaScriptJS函式
- 程式中的函式引數函式
- JavaScript 函式引數解構物件JavaScript函式物件
- 【JS 口袋書】第 3 章:JavaScript 函式JSJavaScript函式
- golang學習之路之函式可變引數Golang函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- JavaScript函式引數解構賦值JavaScript函式賦值
- JavaScript函數語言程式設計學習JavaScript函數程式設計
- Python之在函式中使用列表作為預設引數Python函式
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- 函式中引數傳值函式
- python中函式的引數傳遞Python函式
- 輕鬆初探 Python 篇(六)— 函式Python函式
- 深入學習javascript函數語言程式設計JavaScript函數程式設計
- 輕鬆理解 Transformers (3): Feed-Forward Layer 部分ORMForward
- 函式引數 引數定義函式型別函式型別
- Python3之函式的引數傳遞與引數定義Python函式
- php函式之如何用預設引數和可變長度引數方式傳遞?PHP函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- JavaScript為事件處理函式傳遞引數JavaScript事件函式
- OpenCV中的findContours函式引數詳解OpenCV函式
- 如何輕鬆學習 Kubernetes?
- 人人都能學會的python程式設計教程12:函式的引數Python程式設計函式
- 物聯網學習教程— 字元指標作函式引數字元指標函式
- 僅1個例子輕鬆學習正規表示式