默认绑定指函数独立调用时this的取值规则:全局作用域中this指向全局对象(浏览器为window,Node.js为exports);普通函数直接调用时,非严格模式下指向全局对象,严格模式下为undefined;嵌套函数、回调函数及解构赋值后调用均适用此规则。
默认绑定是 this 最基础的规则:当函数以“独立调用”方式运行(即不作为对象方法、不用 call/apply/bind、也不用 new),this 就按默认规则绑定。
在全局作用域(也就是最外层,没在任何函数里)直接写 this,它指向全局对象:
console.log(this === window) 返回 true
{})var a = 1,就能通过 this.a 访问函数被直接调用时(例如 foo()),内部的 this 也走默认绑定:
"use strict"),this 为 undefined,不会自动 fallback 到 window看似“从对象来”,实则已丢失隐式绑定,退回到默认绑定:
const fn = obj.method; fn(); → this 不再是 objsetTimeout(obj.method, 100) → method 被独立调用const { method } = obj; method(); → 同样失去上下文默认绑定不看函数在哪定义,只看它怎么被调用。只要没被显式指定、没被对象“点”着调、也没被 new 或箭头函数捕获,就按这条规则走。