日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

实战 es6_Node.JS实战65:ES6新特性:箭头函数

發(fā)布時間:2024/10/6 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战 es6_Node.JS实战65:ES6新特性:箭头函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有人說ES6(ES2015)最具魅力的是箭頭函數(shù)。但真的,我不這么認為:箭頭函數(shù)這玩意真是又丑又變扭!

不過,箭頭函數(shù)確實有它的功能優(yōu)勢:

1、簡潔:

(雖然我也不認為這是真的簡潔,還是認為它是很變扭的)

看一段代碼:

const numbers = [1,2,3];

const event = numbers.filter(function(x){

return x % 2 === 0;

});

用箭頭語法重寫是這樣的:

const numbers = [1,2,3];

const event = numbers.filter(x => x % 2 === 0);

(真是種稀里糊涂的格式,不易理解 -_-!)

解釋:

function關(guān)鍵字被刪除,只留下參數(shù),緊跟著的是箭頭(=>),然是函數(shù)功能體。

如果參數(shù)列表中包含多個參數(shù),必須用括號包裹,并用逗號分割。

此外,沒有參數(shù)時,必須在箭頭前用一組空括號:()=>{...}。

當(dāng)函數(shù)的主體只是一行時,可以不使用return,因為它是隱式應(yīng)用的。

2、綁定的詞法作用域

直接用例子來說明:

function DelayedGreeter(name){

this.name = name;

}

DelayedGreeter.prototype.greet = function(){

setTimeout(function cb(){

console.log("hello " + this.name);

},500);

}

const greeter = new DelayedGreeter("world");

greeter.greet();

在這段代碼中,期望輸出Hello world,但world參數(shù)并未能傳到cb函數(shù)的,所以輸出會是:

不引入箭頭函數(shù)時,如果想要得到正確的輸出,需要進行bind操作:

function DelayedGreeter(name){

this.name = name;

}

DelayedGreeter.prototype.greet = function(){

setTimeout( (function cb(){

console.log("hello " + this.name);

}).bind(this) ,500);

}

const greeter = new DelayedGreeter("world");

greeter.greet();

但如果使用箭頭函數(shù),由于它具有綁定作用域的特性,可以較方便的實現(xiàn)上述同樣的效果:

function DelayedGreeter(name){

this.name = name;

}

DelayedGreeter.prototype.greet = function(){

setTimeout( ()=> console.log("hello " + this.name) ,500);

}

const greeter = new DelayedGreeter("world");

greeter.greet();

在這個方面的應(yīng)用確實是方便了一些。

總結(jié)

以上是生活随笔為你收集整理的实战 es6_Node.JS实战65:ES6新特性:箭头函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。