ES6中setTimeout函数的执行上下文

来源:互联网 发布:淘宝群聊pc端入口 编辑:程序博客网 时间:2024/04/28 22:55

简介:setTimeout,延迟执行函数里的执行上下文

(1)ES5中,setTimeout里面的函数的执行上下文为全局上下文,举例来说:

function log(){  setTimeout(function(){console.log(this.id)},100)}var id=42log.call({id:21})//输出的结果为42

我们可以看到setTimeout,被延迟执行的函数,里面的this,指向的是全局作用域,也就是这个函数的上下文为全局上下文。

(2)在ES6的箭头函数中,setTimeout里面,如果执行了一个箭头函数,那么这个函数的执行上下文为定义这个箭头函数所在的函数。

function log(){  setTimeout(()=>{     console.log(this.id)  },100)}var id=42;log.call({id:21})//这次输出的是21

总结:

因为ES6中,箭头函数的this,规定的指向定义这个箭头函数所在的那个函数。于是这里箭头函数里面的this,就固定bind了{id:21}。

0 0
原创粉丝点击