ES6 函式的擴充套件

2021-10-01 20:49:20 字數 1905 閱讀 3881

es6之前,不能直接為函式的引數指定預設值,通常需要先判斷一下引數是否被賦值,如果沒有,則為其設定預設值。

if (typeof 引數 === 'undefined')
es6允許為函式的引數設定預設值,即直接寫在引數定義的後面

function func(param1 = 'defaultvalue1', param2 = 預設值)
注:只有當引數值嚴格等於undefined時,其預設值才會生效。

函式的引數如果是乙個物件,在進行解構賦值時,引數中的變數與實參物件的屬性名進行匹配,如果兩者相同,則進行正常賦值操作,如果引數中的變數未匹配到同名的實參物件屬性,則其值為undefined。

示例如下:

// 該方法只使用了物件的解構賦值預設值,沒有使用函式引數預設值

function foo()

foo({}) // undefined 5

通常情況下,定義了預設值的引數,應該是函式的尾引數。如果非尾部的引數設定了預設值,實際上這個引數是沒法省略的。

函式指定了預設值以後,函式的length屬性,將返回沒有指定預設值的引數個數。準確地說,函式的length屬性會依次計算沒有指定預設值的引數個數,遇到第乙個指定了預設值的引數時就停止計數,然後返回這個數值。

(function (a = 0, b, c) {}).length  // 0

(function (a, b = 1, c) {}).length // 1

rest引數(形式為...變數名),用於獲取函式的多餘引數。

rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中,即...陣列名,表示獲取該陣列中的全部元素。這種用法可以將多個陣列的元素拼接到乙個陣列中

示例如下:

陣列a = [1,2,3] , 陣列b = [4,5,6] 

陣列c = [...a,...b], 則陣列c = [1,2,3,4,5,6]

注意點:

arguments物件不是陣列,而是乙個類似陣列的物件,裡面存放函式的實參

將arguments物件轉換成陣列的方法:array.prototype.slice.call(arguments)

函式的name屬性,返回該函式的函式名。

es6 允許使用「箭頭」(=>)定義函式。

var f = function(params) 

// 等同於

var f = (params) =>

// 報錯

let gettempitem = id => ;

// 不報錯

let gettempitem = id => ();

const full = () => first + ' ' + last;

// 等同於

function full(person)

注意點:

—— 《ecmascript 6 入門教程》

參考文件:ecmascript 6入門-函式的擴充套件

ES6 函式擴充套件

函式在js裡是相當重要的一部分了,es6裡也新增了一些函式方法,來看一下 test hello hello world test hello kill hello kill es6增加了函式引數預設值,可以直接在宣告引數的同時賦預設值,但是也可以後面重新賦值 test2 kill 括號內有引數x時,...

ES6函式擴充套件

函式引數的預設值 在es5中,我們想給函式乙個預設值,需要這樣寫 function add x,y 在es6中 可以這樣寫 function add x,y ss add dd ddss add ss dd ssdd add dd dd我們只需要在引數上直接寫上我們想要的預設值就好了。當我們給函式乙...

ES6函式擴充套件

function fun a,b world fun hello 輸出helloworld let a aa function fun a,b a fun bb function fun arg fun 1,2,3,4,1 語法 param param 對應函式 function 沒有引數 乙個引數...