1. 程式人生 > >ES6語法:函式新特性(一)

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,"全棧學習筆記"); 我們將這個接收表示式的引數放在前面,就是相當於上面哪一種情況反過來,這樣是不行的哦! 這一期的函式知識就分享到這,下一期將繼續分享函式這一塊的知識!如果你發現文中有什麼錯誤或者對我有什麼建議可以私信