最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
this 默认绑定规则是什么:在全局环境与函数内部表现怎么样
时间:2026-07-07 11:29:46 编辑:袖梨 来源:一聚教程网
默认绑定指函数独立调用时this的取值规则:全局作用域中this指向全局对象(浏览器为window,Node.js为exports);普通函数直接调用时,非严格模式下指向全局对象,严格模式下为undefined;嵌套函数、回调函数及解构赋值后调用均适用此规则。
默认绑定是 this 最基础的规则:当函数以“独立调用”方式运行(即不作为对象方法、不用 call/apply/bind、也不用 new),this 就按默认规则绑定。
全局环境中的 this
在全局作用域(也就是最外层,没在任何函数里)直接写 this,它指向全局对象:
- 浏览器中是 window,
console.log(this === window)返回 true - Node.js 中不是 window,而是当前模块的 exports 对象(常表现为一个空对象
{}) - 全局变量会自动成为该对象的属性,比如声明
var a = 1,就能通过this.a访问
普通函数内部的默认绑定
函数被直接调用时(例如 foo()),内部的 this 也走默认绑定:
- 非严格模式下,指向全局对象(浏览器为 window)
- 严格模式下(加
"use strict"),this 为 undefined,不会自动 fallback 到 window - 嵌套函数、回调函数里如果也是独立调用,同样触发默认绑定——哪怕外层 this 已绑定,内层仍可能指向全局或 undefined
容易踩坑的典型场景
看似“从对象来”,实则已丢失隐式绑定,退回到默认绑定:
- 把方法赋给变量再调用:
const fn = obj.method; fn();→ this 不再是 obj - 作为回调传入(如定时器、事件监听):
setTimeout(obj.method, 100)→ method 被独立调用 - 解构后调用:
const { method } = obj; method();→ 同样失去上下文
默认绑定不看函数在哪定义,只看它怎么被调用。只要没被显式指定、没被对象“点”着调、也没被 new 或箭头函数捕获,就按这条规则走。
相关文章
- REPLACED第二章全部收集品位置一览 07-08
- 最强麒麟芯+自研风冷 华为Mate80 Pro MAX 风驰版全面评测:涡轮散热封神 性能稳到骨子里 07-08
- 燕云十六声天下常平成就攻略 07-08
- 风启之旅育苗床制作方法介绍说明 07-08
- 鸿蒙3.0超级桌面连接使用教程 07-08
- 三国杀武将觉醒前期商店买什么好 07-08