【JS核心概念】this的指向
重点: [x] this的指向是函数被调用的时候确定的; [x] 箭头函数中this的指向来自它定义时所处的外部环境。 写在前面:非严格模式下,在浏览器环境中全局对象为window对象,在Node环境中全局对象为global对象,严格模式下,全局对象为undefined。 以下代码运行环境为浏览器,因此全局对象为window对象,使用var和function命令声明的全局变量会变成全局对象的属性。 一、分类讨论 1. 函数名调用模式 如果一个函数中存在this,且直接以函数名的形式调用,那么this指向全局对象; var a1 = 1; function fn1() { var a1 = 2; console.log(this.a1); console.log(this); } fn1(); // 输出结果为: // 1 => 以函数名的形式直接调用fn1,此时fn中的this指向全局对象Window,因此this.a1等于1 // Window function fn2() { var a2 = 2; console.log(this.a2); console.log(this); } fn2(); // 输出结果为: // undefined => 此时fn中的this指向全局对象Window,而Window中没有定义变量a,因此返回undefined // Window