Javascript中的this与函数上下文
Javascript中函数运行时的this和上下文是一个重要的知识点,而且很多文章也做了详细的解析。本文不展开原理进行阐述,只总结结论。
this
用
function定义的函数,运行时的this由调用对象决定,即this指向obj.fn()中的obj,如果无具体的调用方,则为在非严格模式下为global对象,严格模式下为undefined。可通bind,call,apply来绑定运行时的this;用
() => {}定义的箭头函数,无内部的this,由定义时的外部this决定,不可用bind,call,apply来绑定运行时的this;
1 | function testFn() { |
作用域
函数运行时的作用域由定义时所在的作用域决定,和调用的位置无关。Javascript中有三个作用域:全局作用域,块级作用域({}),函数作用域。函数运行的作用域层级为:自身作用域 –> 块级作用域(如有)–> 函数作用域(父级函数)–> 全局作用域。
1 | const fnArr = []; |