JavaScript中的this关键字是如何在函数调用时确定其绑定对象的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2409个文字,预计阅读时间需要10分钟。
在理解JavaScript中的this之前,首先了解作用域。作用域分为两种:
1. 词法作用域:引擎在代码执行前就已经确定了变量的作用域。变量在哪个作用域中声明,就只在那个作用域中查找。
2.上下文作用域:函数的执行上下文决定了this的值。
(引引擎如何查找this和在哪里查找)
在理解javascript的this之前,首先先了解一下作用域。
作用域分为两种:
- 1、词法作用域:引擎在当前作用域或者嵌套的子作用域查找具有名称标识符的变量。(引擎如何查找和在哪查找。定义过程发生在代码书写阶段)
- 2、动态作用域:在运行时被动态确定的作用域。
词法作用域和动态作用域的区别是:词法作用域是在写代码或定义时确定的;动态作用域是在运行时确定的。
this的绑定规则
this是在调用时被绑定,取决于函数的调用位置。由此可以知道,一般情况下(非严格模式下),this都会根据函数调用(调用栈)的上下文来绑定对象。
一、默认绑定
默认绑定:默认绑定是指在非严格模式下,且没有使用别的绑定规则时,this根据函数调用(调用栈)的上下文来绑定对象(全局对象)。
本文共计2409个文字,预计阅读时间需要10分钟。
在理解JavaScript中的this之前,首先了解作用域。作用域分为两种:
1. 词法作用域:引擎在代码执行前就已经确定了变量的作用域。变量在哪个作用域中声明,就只在那个作用域中查找。
2.上下文作用域:函数的执行上下文决定了this的值。
(引引擎如何查找this和在哪里查找)
在理解javascript的this之前,首先先了解一下作用域。
作用域分为两种:
- 1、词法作用域:引擎在当前作用域或者嵌套的子作用域查找具有名称标识符的变量。(引擎如何查找和在哪查找。定义过程发生在代码书写阶段)
- 2、动态作用域:在运行时被动态确定的作用域。
词法作用域和动态作用域的区别是:词法作用域是在写代码或定义时确定的;动态作用域是在运行时确定的。
this的绑定规则
this是在调用时被绑定,取决于函数的调用位置。由此可以知道,一般情况下(非严格模式下),this都会根据函数调用(调用栈)的上下文来绑定对象。
一、默认绑定
默认绑定:默认绑定是指在非严格模式下,且没有使用别的绑定规则时,this根据函数调用(调用栈)的上下文来绑定对象(全局对象)。

