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

ES6 函數

引言:

函數在任何語言中偶讀很重要,java裡面的函數通常叫做方法,其實是一個東西,使用函數可以簡化更多的程式碼,程式碼結構看著更加清晰。今天我們來學學ES6語法中,函數有什麼變化。

雖然現在的有比ES6更高的版本,但是主流一般都是ES6。es6中的函數相對於之前的版本提升了很多,相對來說在某些特定條件下,用新的函數很方便,也更簡潔,功能性更加強大。

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,雖然這種函數調用可以不傳參數,我建議這個時候,這個沒有設置默認值的參數還是盡量要傳。參數的類型可以是任意類型,可以是字元串,數字,函數,對象,都可以設置一個默認的值。
還有一種情況,
如下:

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才能使用默認的第一個參數,然後順利給第二個值設置參數值。

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

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

來來來看程式碼

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,"全棧學習筆記");  

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

Tags: