91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

阜宁县| 遵义县| 诏安县| 新兴县| 德江县| 昌邑市| 北碚区| 黄山市| 北京市| 五指山市| 利津县| 元氏县| 玉林市| 苏州市| 五华县| 西乌珠穆沁旗| 阳谷县| 礼泉县| 盘锦市| 图们市| 西华县| 瑞丽市| 重庆市| 雷波县| 封开县| 齐齐哈尔市| 太仓市| 西宁市| 盈江县| 绥滨县| 平果县| 珲春市| 刚察县| 襄城县| 大化| 宁化县| 峨山| 桐乡市| 松潘县| 苍南县| 临颍县|