美文网首页
setTimeout this指向问题

setTimeout this指向问题

作者: MAYDAY77 | 来源:发表于2019-04-24 14:48 被阅读0次

今天的需求是防止多次提交请求------于是模拟ajax异步请求,用setTimeout代替,更改标识,

submit(){

    if (!this.submitFlag) {

           console.log(this.submitFlag + '点击了没提交');

           this.submitFlag = true;

           setTimeout(function(){

                this.submitFlag = false;

                console.log(this.submitFlag + '成功,可再次提交');

          }, 2000);

            console.log(this.submitFlag + '输出submitFlag');

    }

}

输出结果为:

false 点击了没提交

false 成功,可再次提交

true 输出submitFlag

期望的结果应该是 false 输出submitFlag才对;

后来改为用箭头函数来书写,便没有问题。

 setTimeout(() => {

        this.submitFlag = false;

        console.log(this.submitFlag + '成功,可再次提交');

    }, 2000);

后来想想,怎么能范低级错误呢,setTimeout es5的书写方法里的this指向全局作用域;而es6中箭头函数修复了this指向,就不存在this指向问题了。

相关文章

网友评论

      本文标题:setTimeout this指向问题

      本文链接:https://www.haomeiwen.com/subject/sgrggqtx.html