本文介绍的是setTimeout函数,延迟执行函数里的执行上下文,分享给大家供大家参考学习,来看看详细的内容:
(1)ES5中,setTimeout里面的函数的执行上下文为全局上下文,举例来说:
function log(){ setTimeout(function(){console.log(this.id)},100) } var id=42 log.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}。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对北冥有鱼的支持。
您可能感兴趣的文章:
- 深入理解JavaScript 中的执行上下文和执行栈
- 详释JavaScript执行环境与执行栈
- js bind 函数 使用闭包保存执行上下文
- 跟我学习javascript的执行上下文
- 浅析JavaScript作用域链、执行上下文与闭包
- 深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
- 对于Javascript 执行上下文的全面了解
- 深入探讨JavaScript的最基本部分之执行上下文
- 简单了解JavaScript中的执行上下文和堆栈
- 一篇文章弄懂javascript中的执行栈与执行上下文