javascript - 混淆了箭头函数javascript

标签 javascript typescript

这是我使用 window.setinterval 增加 intVariable 值的代码。

var Arrow = (function () {
    function Arrow() {
        this.intVariable = 1;
        this.itemId = -1;
        this.interval = 25;
    }
    Arrow.prototype.activateTimer = function () {
        if (this.itemId === -1) {
            window.setInterval(this.showTimer(), this.interval);
        }
    };
    Arrow.prototype.showTimer = function () {
        this.intVariable += this.interval;
        console.log(this.intVariable);
    };
    return Arrow;
}());
var arrow = new Arrow();
arrow.activateTimer();

当我在下面使用时,show timer 函数只被调用一次

window.setInterval(this.showTimer(), this.interval);

但是当我把它改成:

window.setInterval(() => this.showTimer(), this.interval);

它完美地工作。

需要一些帮助,了解为什么它使用箭头函数起作用。

最佳答案

您可以直接使用函数引用(不使用括号)

window.setInterval(this.showTimer, this.interval);

通过使用函数调用,

window.setInterval(this.showTimer(), this.interval);
//                               ^^

您插入函数调用的结果而不是函数本身。

当你使用

window.setInterval(() => this.showTimer(), this.interval);

你插入了一个函数,但实际上并没有调用它。

关于javascript - 混淆了箭头函数javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45409107/

相关文章:

javascript - 根据像素宽度使用 jQuery chop 文本

typescript - 检索函数的返回类型而不调用该函数

typescript - 如何模拟 "T extends enum"通用约束?

angular - 不能在 Angular 6 的子模块中使用在应用程序模块内声明的指令

javascript - 生成 doc 或 pdf 文件的图像预览

javascript - 如何在向上或向下拖动图像时更改图像的大小?

javascript - Typescript 知道 import -> require 但不知道 require -> import?

asp.net - 多个独立 View 模型交互( knockout )

javascript - 表格行显示/隐藏 *无* 列宽调整,w/TableLayout : auto

javascript - 在其他函数中使用 var 在 CKeditor 中进行选择