了解JavaScript函數(shù)中的默認(rèn)參數(shù)
前言
JavaScript函數(shù)可以有默認(rèn)參數(shù)值。通過(guò)默認(rèn)函數(shù)參數(shù),你可以初始化帶有默認(rèn)值的正式參數(shù)。如果不初始化具有某些值的參數(shù),則該參數(shù)的默認(rèn)值為undefined。
請(qǐng)看下列代碼:
function foo(num1){ console.log(num1); } foo();
在調(diào)用函數(shù)foo時(shí),你沒(méi)有傳遞任何參數(shù),因此變量num1的默認(rèn)值設(shè)置為undefined。但是,有時(shí)你可能需要設(shè)置默認(rèn)值而非undefined。過(guò)去,最好的策略是測(cè)試參數(shù)值undefined,然后分配一個(gè)值。所以,在上面的例子中,如果你想要將num1的默認(rèn)值設(shè)置為9,那么你可以按照以下代碼所示的方式做:
function foo(num1) { if (num1 === undefined) { num1 = 9; } console.log(num1); } foo();
ECMAScript 6引入了函數(shù)的默認(rèn)參數(shù)。使用ECMA 2015的默認(rèn)參數(shù)功能,你將不再需要檢查未定義的參數(shù)值?,F(xiàn)在,你可以將9設(shè)置為參數(shù)本身的默認(rèn)值。你可以重寫(xiě)上述函數(shù)以使用默認(rèn)值,如下所示:
function foo(num1 =9) { console.log(num1); } foo();
對(duì)于函數(shù)foo,如果num1參數(shù)的值未被傳遞,那么JavaScript將設(shè)置9作為num1的默認(rèn)值。
檢查未定義的參數(shù)
即使你在調(diào)用函數(shù)時(shí)明確地傳遞undefined作為參數(shù)值,參數(shù)值也將設(shè)置為默認(rèn)值。
function foo(num1 =9) { console.log(num1); } foo(undefined);
在上面的代碼中,你傳遞undefined為num1的值;因此,num1的值將被設(shè)置為默認(rèn)值9。
運(yùn)行時(shí)計(jì)算默認(rèn)值
JavaScript函數(shù)默認(rèn)值在運(yùn)行時(shí)計(jì)算。為了更好地理解這一點(diǎn),請(qǐng)看以下代碼:
function foo(value = koo()) { return value; } function koo() { return "Ignite UI"; } var a = foo(); console.log(a);
在函數(shù)foo中,參數(shù)值的默認(rèn)值設(shè)置為函數(shù)koo。在運(yùn)行時(shí)調(diào)用函數(shù)foo時(shí),將計(jì)算函數(shù)koo。調(diào)用foo函數(shù)后,你會(huì)得到如下圖所示的輸出(在這個(gè)例子中,我們使用了Ignite UI框架)。
重用默認(rèn)參數(shù)
默認(rèn)參數(shù)可供之后的默認(rèn)參數(shù)使用。請(qǐng)看下列代碼:
function foo(num1 = 9, num2 = num1 + 8){ console.log(num2); } foo();
在上面的代碼中,使用num1的默認(rèn)值來(lái)計(jì)算num2的默認(rèn)值。調(diào)用函數(shù)foo時(shí)將得到以下輸出:
結(jié)論
JavaScript默認(rèn)參數(shù)在編寫(xiě)函數(shù)時(shí)非常有用。在調(diào)用函數(shù)時(shí),如果缺少參數(shù),則默認(rèn)參數(shù)功能允許你為函數(shù)參數(shù)分配默認(rèn)值,而不是將其定義為undefined。
英文原文:Easy JavaScript Part 3: What Is a Default Parameter in a Function?
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javaScript arguments 對(duì)象使用介紹
函數(shù)體內(nèi)可以通過(guò) arguments 對(duì)象來(lái)接收傳遞進(jìn)來(lái)的參數(shù),下面有個(gè)不錯(cuò)的示例,大家可以感受下2013-10-10JavaScript中使用concat()方法拼接字符串的教程
這篇文章主要介紹了JavaScript中使用concat()方法拼接字符串的教程,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06javascript學(xué)習(xí)筆記(十四) window對(duì)象使用介紹
javascript學(xué)習(xí)筆記之window對(duì)象使用介紹,需要的朋友可以參考下2012-06-06BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--JavaScript篇
很多面試題是我自己面試BAT親身經(jīng)歷碰到的。整理分享出來(lái)希望更多的前端er共同進(jìn)步吧,不僅適用于求職者,對(duì)于鞏固復(fù)習(xí)js更是大有裨益2014-10-10Javascript數(shù)組循環(huán)遍歷之forEach詳解
本篇文章主要介紹了Javascript 數(shù)組循環(huán)遍歷之forEach詳解,對(duì)學(xué)習(xí)forEach有很好的幫助,有需要的可以了解一下。2016-11-11