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 = []; |