中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript箭頭函數_動力節點Java學院整理

發布時間:2020-10-12 09:12:10 來源:腳本之家 閱讀:148 作者:liaoxuefeng 欄目:web開發

ES6標準新增了一種新的函數:Arrow Function(箭頭函數)。

為什么叫Arrow Function?因為它的定義用的就是一個箭頭:

x => x * x

上面的箭頭函數相當于:

function (x) {
 return x * x;
}

在繼續學習箭頭函數之前,請測試你的瀏覽器是否支持ES6的Arrow Function

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

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

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

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

// 無參數:
() => 3.14

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

如果要返回一個對象,就要注意,如果是單表達式,這么寫的話會報錯:

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

因為和函數體的{ ... }有語法沖突,所以要改為:

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

this

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

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

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();
 }
};

現在,箭頭函數完全修復了this的指向,this總是指向詞法作用域,也就是外層調用者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

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

var that = this;

就不再需要了。

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖远县| 尉犁县| 孝义市| 汝南县| 同仁县| 化州市| 胶州市| 五常市| 嘉义县| 石阡县| 濉溪县| 中宁县| 嵊州市| 灵台县| 藁城市| 忻城县| 鄯善县| 龙井市| 香格里拉县| 双辽市| 万安县| 新龙县| 台江县| 石嘴山市| 黔东| 绥芬河市| 商丘市| 思茅市| 新闻| 什邡市| 郑州市| 舒城县| 鄱阳县| 手机| 南江县| 六枝特区| 麻江县| 连江县| 金平| 娄底市| 丰县|