es6 最佳入門實踐 4

2022-08-19 19:06:12 字數 2213 閱讀 9292

預設引數就是當使用者沒有傳值的時候函式內部預設使用的值,在es5中我們通過邏輯運算子||來實現

function fn(a, b) 

console.log(fn("hello"))

這樣寫有乙個缺點就是當我傳入乙個空字串的時候,返回的結果並不是我想要的結果,正確的輸出結果應該是:hello,但是因為空字串會被轉換成false, b = '' || "nodeing",所以最終輸出的結果會是「hellonodeing「,因此,我們還需要去判斷b有沒有值

function fn(a, b) 

return a + b

}console.log(fn("hello"))

在es6中沒有必要那麼麻煩,可以在函式定義的時候給定預設值

function fn(a, b = "nodeing")
fn(...引數名),這種形式的引數叫做rest引數,作用就是獲取函式多餘的引數,這樣就不需要arguments物件了

function fn(...arg)

}fn(1,3,4,5,6)

使用rest引數和普通引數混用的時候需要注意的是一一對應關係

function fn(a,b,...arg)

fn(1,2,4,5,6)// 1傳給a 2 傳給b, 4、6、6傳給arg,arg是乙個陣列

還應該注意的一點是rest引數必須放在最後

function fn(...arg,a,b){}  //錯誤
在es6中,定義函式可以使用箭頭(=>)的形式

let f = n => n*2
這種寫法等價於

let f = function(n)
上面函式只是傳入了乙個引數,如果有多個引數的時候,需要寫成這樣

let f = (a, b) => a + b;
等價於

let f = function(a,b)
如果函式體有多條語句的時候寫成這樣

let f = (a, b) => else

}

如果沒有引數的時候,括號不能省略

let f = () => console.log(1)

f()//f = => console.log(1) 如果寫成這樣會報錯

注意事項:

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

document.onclick = ()=>;
上面**中呼叫後面箭頭函式的是document物件 但是指向的卻是window,因為箭頭函式在window環境下定義的

document.onclick = function () ;

f();

}

上面**中箭頭函式裡的this指向的是document,原因是箭頭函式是在事件處理函式function(){}中呼叫的,在onclick後面的匿名函式function中this是指向document的,所以內層的箭頭函式裡的this和外層函式的this都會指向document

再舉乙個例子:

document.onclick = ()=>;

function fn() , 1000) //document

}// fn()

document.onclick = fn;

上面**中,setinterval中的匿名函式是在外層的fn環境下定義的,外層fn中的this是指向document,所有箭頭函式中的this也指向document

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

let f = ()=>{}

let f1 = new f() //報錯

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

let f = ()=>

f() //報錯

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

es6 最佳入門實踐 6

symbol是es6中一種新增加的資料型別,它表示獨一無二的值。es5中我們把資料型別分為基本資料型別 字串 數字 布林 undefined null 和引用資料型別 object 在es6中新增的symbol資料型別劃分到基本資料型別 為什麼會有這樣一種資料型別呢?別人給了你乙個定義好的物件 va...

es6 最佳入門實踐 12

在es5中,物件導向我們通常寫成這樣 function person name,age person.prototype.showname function let p new person xiaoqiang 10 p.showname 上面這種寫法與傳統的物件導向寫法有很大的不同,讓學習過其他物...

es6 最佳入門實踐 10

generator函式是es6提供的一種非同步程式設計解決方案。在它的內部封裝了多個狀態,因此,又可以理解為一種狀態機,執行generator函式後返回乙個迭代器物件,使用這個迭代器物件可以遍歷出generator函式內部的狀態 generator函式和傳統函式的不同點有 1 函式定義的時候,fun...