最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript箭頭函數(shù)_動力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年06月28日 10:17:05   作者:liaoxuefeng  
這篇文章主要為大家詳細(xì)介紹了JavaScript箭頭函數(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))。

為什么叫Arrow Function?因?yàn)樗亩x用的就是一個箭頭:

x => x * x

上面的箭頭函數(shù)相當(dāng)于:

function (x) {
 return x * x;
}

在繼續(xù)學(xué)習(xí)箭頭函數(shù)之前,請測試你的瀏覽器是否支持ES6的Arrow Function

箭頭函數(shù)相當(dāng)于匿名函數(shù),并且簡化了函數(shù)定義。箭頭函數(shù)有兩種格式,一種像上面的,只包含一個表達(dá)式,連{ ... }和return都省略掉了。還有一種可以包含多條語句,這時(shí)候就不能省略{ ... }return

x => {
 if (x > 0) {
  return x * x;
 }
 else {
  return - x * x;
 }
}

如果參數(shù)不是一個,就需要用括號()括起來:

// 兩個參數(shù):
(x, y) => x * x + y * y

// 無參數(shù):
() => 3.14

// 可變參數(shù):
(x, y, ...rest) => {
 var i, sum = x + y;
 for (i=0; i<rest.length; i++) {
  sum += rest[i];
 }
 return sum;
}

如果要返回一個對象,就要注意,如果是單表達(dá)式,這么寫的話會報(bào)錯:

// SyntaxError:
x => { foo: x }

因?yàn)楹秃瘮?shù)體的{ ... }有語法沖突,所以要改為:

// ok:
x => ({ foo: x })

this

箭頭函數(shù)看上去是匿名函數(shù)的一種簡寫,但實(shí)際上,箭頭函數(shù)和匿名函數(shù)有個明顯的區(qū)別:箭頭函數(shù)內(nèi)部的this是詞法作用域,由上下文確定。

回顧前面的例子,由于JavaScript函數(shù)對this綁定的錯誤處理,下面的例子無法得到預(yù)期結(jié)果:

var obj = {
 birth: 1990,
 getAge: function () {
  var b = this.birth; // 1990
  var fn = function () {
   return new Date().getFullYear() - this.birth; // this指向window或undefined
  };
  return fn();
 }
};

現(xiàn)在,箭頭函數(shù)完全修復(fù)了this的指向,this總是指向詞法作用域,也就是外層調(diào)用者obj

var obj = {
 birth: 1990,
 getAge: function () {
  var b = this.birth; // 1990
  var fn = () => new Date().getFullYear() - this.birth; // this指向obj對象
  return fn();
 }
};
obj.getAge(); // 25

如果使用箭頭函數(shù),以前的那種hack寫法:

var that = this;

就不再需要了。

由于this在箭頭函數(shù)中已經(jīng)按照詞法作用域綁定了,所以,用call()或者apply()調(diào)用箭頭函數(shù)時(shí),無法對this進(jìn)行綁定,即傳入的第一個參數(shù)被忽略:

var obj = {
 birth: 1990,
 getAge: function (year) {
  var b = this.birth; // 1990
  var fn = (y) => y - this.birth; // this.birth仍是1990
  return fn.call({birth:2000}, year);
 }
};
obj.getAge(2015); // 25

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

南投市| 宜兰市| 曲松县| 韩城市| 蒙山县| 蓬莱市| 高密市| 福泉市| 高要市| 施秉县| 柳河县| 缙云县| 静乐县| 浙江省| 闸北区| 嘉峪关市| 酉阳| 彭州市| 哈尔滨市| 同仁县| 鲜城| 沧州市| 华亭县| 松溪县| 湄潭县| 苏尼特右旗| 博野县| 贵南县| 汾西县| 德化县| 南郑县| 满城县| 偏关县| 乌拉特中旗| 永胜县| 拉萨市| 阿拉善左旗| 建瓯市| 樟树市| 嘉祥县| 望谟县|