溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ES6函數(shù)怎么用

發(fā)布時(shí)間:2022-02-19 10:00:53 來(lái)源:億速云 閱讀:108 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)ES6函數(shù)怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

ECMAScript 6.0(以下簡(jiǎn)稱ES6)是JavaScript語(yǔ)言的下一代標(biāo)準(zhǔn),已經(jīng)在2015年6月正式發(fā)布了。它的目標(biāo),是使得JavaScript語(yǔ)言可以用來(lái)編寫復(fù)雜的大型應(yīng)用程序,成為企業(yè)級(jí)開發(fā)語(yǔ)言。

ES6函數(shù)怎么用

函數(shù)參數(shù)的擴(kuò)展

默認(rèn)參數(shù)

基本用法

function fn(name,age=17){
console.log(name+","+age);
}
fn("Amy",18);  // Amy,18
fn("Amy","");  // Amy,
fn("Amy");     // Amy,17

注意點(diǎn):使用函數(shù)默認(rèn)參數(shù)時(shí),不允許有同名參數(shù)。

// 不報(bào)錯(cuò)function fn(name,name){
console.log(name);
}

// 報(bào)錯(cuò)
//SyntaxError: Duplicate parameter name not allowed in this contextfunction fn(name,name,age=17){
console.log(name+","+age);
}

只有在未傳遞參數(shù),或者參數(shù)為 undefined 時(shí),才會(huì)使用默認(rèn)參數(shù),null 值被認(rèn)為是有效的值傳遞。

function fn(name,age=17){
   console.log(name+","+age);
}
fn("Amy",null); // Amy,null

函數(shù)參數(shù)默認(rèn)值存在暫時(shí)性死區(qū),在函數(shù)參數(shù)默認(rèn)值表達(dá)式中,還未初始化賦值的參數(shù)值無(wú)法作為其他參數(shù)的默認(rèn)值。

function f(x,y=x){
   console.log(x,y);
}
f(1);  // 1 1function f(x=y){
   console.log(x);
}
f();  // ReferenceError: y is not defined
不定參數(shù)

不定參數(shù)用來(lái)表示不確定參數(shù)個(gè)數(shù),形如,…變量名,由…加上一個(gè)具名參數(shù)標(biāo)識(shí)符組成。具名參數(shù)只能放在參數(shù)組的最后,并且有且只有一個(gè)不定參數(shù)。

基本用法

function f(...values){
   console.log(values.length);
}
f(1,2);      //2
f(1,2,3,4);  //4
箭頭函數(shù)

箭頭函數(shù)提供了一種更加簡(jiǎn)潔的函數(shù)書寫方式?;菊Z(yǔ)法是:

參數(shù) => 函數(shù)體 基本用法:

var f = v => v;
//等價(jià)于
var f = function(a){return a;
}
f(1);  //1

當(dāng)箭頭函數(shù)沒有參數(shù)或者有多個(gè)參數(shù),要用 () 括起來(lái)。

var f = (a,b) => a+b;
f(6,2);  //8

當(dāng)箭頭函數(shù)函數(shù)體有多行語(yǔ)句,用 {} 包裹起來(lái),表示代碼塊,當(dāng)只有一行語(yǔ)句,并且需要返回結(jié)果時(shí),可以省略 {} , 結(jié)果會(huì)自動(dòng)返回。

var f = (a,b) => {let result = a+b;return result;
}
f(6,2);  // 8

當(dāng)箭頭函數(shù)要返回對(duì)象的時(shí)候,為了區(qū)分于代碼塊,要用 () 將對(duì)象包裹起來(lái)

// 報(bào)錯(cuò)
var f = (id,name) => {id: id, name: name};
f(6,2);  // SyntaxError: Unexpected token :

// 不報(bào)錯(cuò)
var f = (id,name) => ({id: id, name: name});
f(6,2);  // {id: 6, name: 2}

注意點(diǎn):沒有 this、super、arguments 和 new.target 綁定。

var func = () => {
 // 箭頭函數(shù)里面沒有 this 對(duì)象,
 // 此時(shí)的 this 是外層的 this 對(duì)象,即 Window
 console.log(this)
}
func(55)  // Window

var func = () => {    
 console.log(arguments)
}
func(55);  // ReferenceError: arguments is not defined

箭頭函數(shù)體中的 this 對(duì)象,是定義函數(shù)時(shí)的對(duì)象,而不是使用函數(shù)時(shí)的對(duì)象。

function fn(){
 setTimeout(()=>{
   // 定義時(shí),this 綁定的是 fn 中的 this 對(duì)象
   console.log(this.a);
 },0)
}
var a = 20;
// fn 的 this 對(duì)象為 {a: 19}
fn.call({a: 18});  // 18

不可以作為構(gòu)造函數(shù),也就是不能使用 new 命令,否則會(huì)報(bào)錯(cuò)

適合使用的場(chǎng)景

ES6 之前,JavaScript 的 this 對(duì)象一直很令人頭大,回調(diào)函數(shù),經(jīng)??吹?var self = this 這樣的代碼,為了將外部 this 傳遞到回調(diào)函數(shù)中,那么有了箭頭函數(shù),就不需要這樣做了,直接使用 this 就行。

// 回調(diào)函數(shù)
var Person = {
   'age': 18,
   'sayHello': function () {
     setTimeout(function () {
       console.log(this.age);
     });
   }
};
var age = 20;
Person.sayHello();  // 20

var Person1 = {
   'age': 18,
   'sayHello': function () {
     setTimeout(()=>{
       console.log(this.age);
     });
   }
};
var age = 20;
Person1.sayHello();  // 18

所以,當(dāng)我們需要維護(hù)一個(gè) this 上下文的時(shí)候,就可以使用箭頭函數(shù)。

不適合使用的場(chǎng)景

定義函數(shù)的方法,且該方法中包含 this

var Person = {
   'age': 18,
   'sayHello': ()=>{
       console.log(this.age);
     }
};
var age = 20;
Person.sayHello();  // 20
// 此時(shí) this 指向的是全局對(duì)象

var Person1 = {
   'age': 18,
   'sayHello': function () {
       console.log(this.age);
   }
};
var age = 20;
Person1.sayHello();   // 18
// 此時(shí)的 this 指向 Person1 對(duì)象

需要?jiǎng)討B(tài) this 的時(shí)候

var button = document.getElementById('userClick');
button.addEventListener('click', () => {
    this.classList.toggle('on');
});

button 的監(jiān)聽函數(shù)是箭頭函數(shù),所以監(jiān)聽函數(shù)里面的 this 指向的是定義的時(shí)候外層的 this 對(duì)象,即 Window,導(dǎo)致無(wú)法操作到被點(diǎn)擊的按鈕對(duì)象。

感謝各位的閱讀!關(guān)于“ES6函數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

es6
AI