簡體   English   中英

為什么typeof回調成為數字?

[英]Why typeof callback become number?

我有一個非常奇怪的問題,與callback和requestAnimationFrame 它一次成功執行,但是第二次回調成為數字。

 function TEST () { this.michou = "jean"; } TEST.prototype.talk = function(fn) { window.requestAnimationFrame(this.talk.bind(this)); alert(typeof fn); //type of callback fn(); }; var jean = new TEST(); jean.talk(function() { alert("hello"); }); 

如果嘗試使用此代碼,將在警報“功能”“ hello”和“數字”“數字”中看到。 為什么在callback類型中顯示“數字”?

在動畫幀中調用.talk()函數時,沒有傳遞fn值(盡管傳遞了某些東西 ;請參見下文)。 如果更改代碼,則可以解決此問題:

TEST.prototype.talk = function(fn) {
  window.requestAnimationFrame(this.talk.bind(this, fn));
  alert(typeof fn); //type of callback
  fn();
};

如果在將函數綁定到對象引用時將fn作為第二個參數傳遞,則將使用正確的this參數來調用該函數。

您的代碼看到的數字值是瀏覽器傳遞到動畫幀回調的高分辨率時間戳。 如果代碼如上所述進行更改,它仍然會通過,但這將是第二個參數,而不是第一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM