es6學習語法總結 函式擴充套件

2022-09-10 09:18:14 字數 3026 閱讀 9080

一、函式預設值

1、es6 允許為函式的引數設定預設值,即直接寫在引數定義的後面。傳空或不傳則返回預設值

function log(x, y = 'world') 

log('hello') //

hello world

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

hello china

log('hello', '') //

hello

引數變數是預設宣告的,所以不能用letconst再次宣告。

使用引數預設值時,函式不能有同名引數

function foo(x = 5) 

function foo(x, x, y = 1)

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

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

只有當函式foo的引數是乙個物件時,變數xy才會通過解構賦值而生成。

function foo() 

foo({})

//undefined, 5

foo() //

1, 5

foo() //

1, 2

foo() //

typeerror: cannot read property 'x' of undefined

function fetch(url, })

fetch('', {})

//"get"

fetch('')

//報錯

雙重預設值,函式fetch沒有第二個引數時,函式引數的預設值就會生效,然後才是解構賦值的預設值生效,變數method才會取到預設值get

function fetch(url,  }) 

fetch('', {})

//"get"

fetch('')

//報錯

function fetch(url, ={})

fetch('')

3、引數預設值的位置

非尾部的引數設定預設值,實際上這個引數是沒法省略的。

function f(x = 1, y) 

f()

//[1, undefined]

f(2) //

[2, undefined])

f(, 1) //

報錯f(undefined, 1) //

[1, 1]

4、作用域

一旦設定了引數的預設值,函式進行宣告初始化時,引數會形成乙個單獨的作用域(context)。

等到初始化結束,這個作用域就會消失。

引數y的預設值等於變數x。呼叫函式f時,引數形成乙個單獨的作用域。

在這個作用域裡面,預設值變數x指向第乙個引數x,而不是全域性變數x,所以輸出是2

var x = 1;

function f(x, y =x)

f(2) //

2

函式f呼叫時,引數y = x形成乙個單獨的作用域。

這個作用域裡面,變數x本身沒有定義,所以指向外層的全域性變數x

函式呼叫時,函式體內部的區域性變數x影響不到預設值變數x

let x = 1;

function f(y =x)

f()

//1

引數的預設值是乙個函式,該函式的作用域也遵守這個規則.

let foo = 'outer'function bar(func = x =>foo) 

bar();

//outer

5、應用

利用引數預設值,可以指定某乙個引數不得省略,如果省略就丟擲乙個錯誤。

function

throwifmissing()

function foo(mustbeprovided =throwifmissing())

foo()

//error: missing parameter

二、rest引數

1、簡介

es6 引入 rest 引數(形式為...變數名),用於獲取函式的多餘引數,這樣就不需要使用arguments物件了。

rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中。

add函式是乙個求和函式,利用 rest 引數,可以向該函式傳入任意數目的引數。

function

add(...values)

return

sum;

}add(2, 5, 3) //

10

陣列快速排序

//

arguments變數的寫法

function

sortnumbers()

//rest引數的寫法

const sortnumbers = (...numbers) => numbers.sort();

rest 引數中的變數代表乙個陣列,所以陣列特有的方法都可以用於這個變數。

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

function

push(array, ...items) );

}var a =;

push(a, 1, 2, 3)

es6 語法 (正則擴充套件)

es5中常見修飾符是g i es6中新增 y,u exec 方法用於檢索字串中的正規表示式的匹配。test a false console.log u u.test a true 加上u才能被識別 console.log u let s console.log u test s false cons...

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我們只需要在引數上直接寫上我們想要的預設值就好了。當我們給函式乙...