ES6語法:函數新特性(一)

ES6 函數

引言:java

函數在任何語言中偶讀很重要,java裏面的函數一般叫作方法,實際上是一個東西,使用函數能夠簡化更多的代碼,代碼結構看着更加清晰。今天咱們來學學ES6語法中,函數有什麼變化。es6

雖然如今的有比ES6更高的版本,可是主流通常都是ES6。es6中的函數相對於以前的版本提高了不少,相對來講在某些特定條件下,用新的函數很方便,也更簡潔,功能性更增強大。express

1.帶參數默認值的函數。

咱們都知道js是弱類型語言,不知道你有沒有試過,或者學到過,js的函數聲明事後,在調用這個函數的時候能夠忽略這個函數所帶的參數,就是說,聲明的這個函數本來是帶有參數的,可是呢,我在調用的時候是不須要傳參的,這樣也不會報錯,而那些參數會有一個默認的值。來看看代碼。函數

function testParameter(parameter1,parameter2){
	console.log(parameter1);
	console.log(parameter2);
}
testParameter();

這個是能夠運行的,不會報錯的,結果是什麼呢?兩個都是undefined。這就是弱類型語言的特色之一,與java不一樣,java會強制要求你輸入參數。
通常來講,咱們在實際項目中,若是有這種用法的話,這些參數都是有用的也就是須要參數有一個默認值。在es6以前,若是沒有傳參數,並且這個參數又是須要用到的,須要一個默認值,咱們都須要本身判斷這個參數是否是undefined,而後給這個參數設置默認值。這樣本身寫代碼就比較麻煩。所以在es6的時候,函數能夠這樣聲明,給函數的參數設置一個默認值。學習

function defaultParameter(parameter1,parameter2=30){
    console.log(parameter1);
    console.log(parameter2);
}
defaultParameter();

這樣咱們就給parameter2設置了一個默認的值爲30,parameter1仍是爲undefined,雖然這種函數調用能夠不傳參數,我建議這個時候,這個沒有設置默認值的參數仍是儘可能要傳。參數的類型能夠是任意類型,能夠是字符串,數字,函數,對象,均可以設置一個默認的值。
還有一種狀況,
以下:code

function defaultParameter1(parameter1="這是第一個參數",parameter2){
	return parameter1+parameter2;
}

console.log(defaultParameter1());

這段代碼打印出來的是「這是第一個參數undefined」,而後咱們傳一個參數。對象

function defaultParameter1(parameter1="這是第一個參數",parameter2){
	return parameter1+parameter2;
}

console.log(defaultParameter1(20));

你猜如今的結果是什麼?你可能會說"20undefined",可是結果然不是這個,結果是"NaN",爲何?,仔細的同窗就發現了,咱們傳的是一個20,而不是「20」,這個數字20和undefined相加的結果就成了NaN。當咱們傳「20」的時候,答案就是「20undefined」,可是我想說的是,若是這時我不想傳第一個值怎麼辦,我想穿第二個值。往下看。字符串

function defaultParameter1(parameter1="這是第一個參數",parameter2){
	return parameter1+parameter2;
}

console.log(defaultParameter1(undefined,"這是第二個參數"));

把第一個參數設置成undefined就好了,而且只有設置成undefined才能使用默認的第一個參數,而後順利給第二個值設置參數值。get

2.參數默認值爲表達式的函數。

前面說了帶有默認值參數的函數,這節就爲你帶來,參數是表達式io

來來來看代碼

function expression(name,address=getStr()){
	console.log(name+address);
}
function getStr(){
	return "全棧學習筆記!"
}
expression("wx search");

這樣也是可行的,結果你懂的,哈哈,若是你以爲能學到很多知識,就試試這個結果,精彩美文天天爲你推送!
這裏其實有一個有趣的,看下面;

function expression(name,address=name){
	console.log(name+address);
}
function getStr(){
	return "全棧學習筆記!"
}
expression("全棧學習筆記");

這樣也是能夠的,結果就是會打印出來兩個「全棧學習筆記」,而後看看這個

function expression(name=address,address){
	console.log(name+address);
}
function getStr(){
	return "全棧學習筆記!"
}
expression(undefined,"全棧學習筆記");

咱們將這個接收表達式的參數放在前面,就是至關於上面哪種狀況反過來,這樣是不行的哦! 這一期的函數知識就分享到這,下一期將繼續分享函數這一塊的知識!若是你發現文中有什麼錯誤或者對我有什麼建議能夠私信我哦!

相關文章
相關標籤/搜索