对象中,this.x和x的区别
var x = 1, y = 2;var z = function () {var x = 2; // 局部变量 xreturn {x: x, // 对象属性 x,与局部变量 x 的初始值相同(2)y: function (a, b) {this.x = a + b; // 修改的是对象的属性 x},z: function () {return x; // 返回局部变量 x 的当前值}};
};var a = z();
a.y(x, y); // 这里将 a.y(1, 2) ,即 this.x = 1 + 2
console.log(a.z(), a.x, x); // 输出:2 3 1
闭包+this
this 是执行上下文中的一个属性,它指向最后一次调用这个方法的对象
let x = "global"; // 全局变量function outer() {let x = "outer"; // 外层函数的局部变量return function inner() {console.log(this.x); // 引用 this.x,最后一次调用该方法的对象,此时时全局对象};
}const closure = outer();
closure(); // 输出 "global"
闭包
闭包会“记住”它定义时所处的作用域链,并优先使用最近的作用域中的变量。
let x = "global"; // 全局变量function outer() {let x = "outer"; // 外层函数的局部变量return function inner() {console.log(x); // 引用了外层函数的 x};
}const closure = outer();
closure(); // 输出 "outer"