js 的胖箭頭問題

來源:互聯網
上載者:User

標籤:沒有   傳說   timeout   函數   not   self   foo   解決   定時   

我們在聲明函數的時候通常是

var foo function(a){

console.log(a) 

};

用ES6 我們寫成了這樣

var foo = a =>{

  console.log(a);

};

foo(2);

只是少些了function欄位哪些冗餘的東西嗎

首先看下下面的代碼:

var obj={

  id:"LOVE"

  love:functionLove(){

  console.log(this.id);

  }

};

var id = "HIT"

obj.love(); //LOVE

setTimeout(obj.love,100); // LOVE

都是LOVE ,沒什麼毛病吧,本應該是setTimeout(obj.love,100);輸入HIT

按照分析,love 函數丟失了同this 之間的綁定,應該是HIT this 應該是window 最常用的是var self = this;來處理下this:

var obj = {
id: "not LOVE",
love: function() {
var self = this
console.log(this.id);
}};
var id = "not HIT"
obj.love()
setTimeout(obj.love(), 1000);

哦 傳說中的胖尖頭this綁定時的行為和普通函數的行為完全不一致,難道是在es5 中解決了?沒有 ,在strict 模式下,這些都不是問題,但是在非strict 模式下是會輸出Hit的

js 的胖箭頭問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.