ES6函式擴充套件

2021-10-14 13:25:14 字數 2247 閱讀 4017

1、length將返回沒有指定預設值的引數個數,並且如果指定引數預設值的不是末尾引數,則其後面的引數不在計算範圍內。

function

point

(a, b=

0, c)

function

test

(a, b, c=0)

console.

log(point.length)

;//1

console.

log(test.length)

;//2

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

var x =1;

function

f(x, y = x)f(

)

分析:引數y的預設值等於變數x,當呼叫函式時引數形成自己作用域,在其中找到第乙個引數x。

var x =1;

function

f(y = x)f(

);// 2 1f(

5);// 2 5

分析:當函式呼叫時,引數形成的作用域裡,x沒有定義,所以y=x指向全域性的x,y預設值是1。當傳入引數時,預設值失效。

2、當引數預設值是函式時,規則一樣。

var x =10;

function

bar(x,y=

function()

)bar()

;// 2 f()

console.

log(x)

;// 10

分析:y函式內部的變數x,指向同乙個作用域的第乙個引數x,執行y()後,x=2;如果去掉y(),則輸出x=5;如果再去掉x=5,則輸出x未定義。

var x =10;

function

bar(x,y=

function()

)}bar(3)

;

console.

log(x)

;// 10

1、rest 引數之後不能再有其他引數(即只能是最後乙個引數)。

function

push

(array,

...items));

}var a =

;push

(a,1,2

,3);

// 1 2 3

console.

log(a)

// [1, 2, 3]

2、在使用函式的length時,不計算rest引數

(

function

(...a)

).length // 0

(function

(a,...b)

).length // 1

1、如果函式引數使用了預設值、解構賦值、擴充套件運算子(…a),那麼函式內部就不能直接使用』use strict』。

補充:擴充套件運算子,取出引數物件中的所有可遍歷屬性,拷貝到當前物件之中。如果使用者自定義的屬性,放在擴充套件運算子後面,則擴充套件運算子內部的同名屬性會被覆蓋掉。

let bar =

;let baz =};

console.

log(baz)

;//

2、解決上述問題:(1)設定全域性性的嚴格模式;(2)把函式包在乙個無引數的立即執行函式裡。

1、如果將乙個具有函式名的函式賦值給乙個變數,則返回這個函式原本的名字。

varf=

function

fun();

console.

log(f.name)

;//fun

function

foo(),

1000);

}var number =25;

foo.

call()

;// number= 52

foo(

)// number= 25

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

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 沒有引數 乙個引數...