ES6之函式的拓展 部分

2021-08-03 22:24:41 字數 2311 閱讀 6698

本文參考阮一峰老師的ecmascript6入門

函式引數的預設值

es6 允許為函式的引數設定預設值,即直接寫在引數定義的後面。

function log(x, y = 'world') 

log('hello') // hello world

log('hello', 'china') // hello china

log('hello', '') // hello

乙個容易忽略的地方是,引數預設值不是傳值的,而是每次都重新計算預設值表示式的值。也就是說,引數預設值是惰性求值的。

let x = 99;

function

foo(p = x + 1)

foo() // 100

x = 100;

foo() // 101

與解構賦值預設值結合使用

引數預設值可以與解構賦值的預設值,結合起來使用。

function

foo()

foo({}) // undefined, 5

foo() // 1, 5

foo() // 1, 2

foo() // typeerror: cannot read

property

'x'of undefined

rest 引數

es6 引入 rest 引數(形式為…變數名),用於獲取函式的多餘引數,這樣就不需要使用arguments物件了。rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中。

function

add(...values)

return sum;

}add(2, 5, 3) // 10

注意,rest 引數之後不能再有其他引數(即只能是最後乙個引數),否則會報錯。

// 報錯

function

f(a, ...b, c)

箭頭函式

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

var f = v => v;
上面的箭頭函式等同於:

var f = function

(v) ;

如果箭頭函式不需要引數或需要多個引數,就使用乙個圓括號代表引數部分。

var f = () => 5;

// 等同於

var f = function

() ;

var sum = (num1, num2) => num1 + num2;

// 等同於

var sum = function

(num1, num2) ;

如果箭頭函式的**塊部分多於一條語句,就要使用大括號將它們括起來,並且使用return語句返回。

var

sum = (num1, num2) =>

箭頭函式可以與變數解構結合使用。

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

// 等同於

function

full

(person)

箭頭函式使用注意點

箭頭函式有幾個使用注意點。

(1)函式體內的this物件,就是定義時所在的物件,而不是使用時所在的物件。

(2)不可以當作建構函式,也就是說,不可以使用new命令,否則會丟擲乙個錯誤。

(3)不可以使用arguments物件,該物件在函式體內不存在。如果要用,可以用 rest 引數代替。

(4)不可以使用yield命令,因此箭頭函式不能用作 generator 函式。

上面四點中,第一點尤其值得注意。this物件的指向是可變的,但是在箭頭函式中,它是固定的。

function foo() , 100);

}var

id = 21;

foo.call

();// id: 42

上面**中,settimeout的引數是乙個箭頭函式,這個箭頭函式的定義生效是在foo函式生成時,而它的真正執行要等到100毫秒後。如果是普通函式,執行時this應該指向全域性物件window,這時應該輸出21。但是,箭頭函式導致this總是指向函式定義生效時所在的物件(本例是),所以輸出的是42。

es6的函式拓展

參考 1.增加函式預設值 es6允許為函式提供預設值,與解構賦值一起使用,非常地方便 function foo foo 相當於執行let 輸出undefined 5 foo 相當於執行let 輸出 1 5 foo 1 2 foo typeerror cannot read property x of...

ES6 函式拓展內容

es6允許為函式的引數設定預設值,即直接寫在引數定義的後面。function log x,y world log hello hello world log hello yivi hello yivi log hello hello引數變數是預設宣告的,因此不能再用let或const再次宣告,也不能...

ES6之函式拓展 點語法

1 函式設定預設引數 沒有傳入color引數時,給予預設值 red function fun color red 2 語法用於接收n個函式實參 用於將多個單獨項轉化為乙個陣列 function add args add 0 add 1,2 3 add 1,2,3 6 3 逆運用 用於將乙個陣列轉化為...