箭头函数中window的指向
时间: 2023-12-27 12:03:51 浏览: 28
箭头函数中的this指向的是定义时所在的作用域中的this值,而不是执行时所在的作用域中的this值。因此,在箭头函数中使用window时,它指向的是全局对象。例如:
```
const arrowFunc = () => {
console.log(this === window); // true
};
arrowFunc();
```
相关问题
js中箭头函数this的指向
箭头函数的特点是没有自己的 this 绑定,它会捕获外层作用域的 this 值作为自己的 this 值。简单来说,箭头函数的 this 指向定义时所在的父级作用域的 this,而不是调用时所在的对象。
这与普通函数的 this 绑定机制有所不同。普通函数的 this 值是在调用时动态绑定的,取决于调用时的上下文。而箭头函数的 this 值是在定义时确定的,不会改变。
例如,在以下代码中:
```javascript
const obj = {
name: 'C知道',
greet: function() {
setTimeout(() => {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
};
obj.greet();
```
箭头函数内部的 this 指向的是 obj 对象,因为它是在 obj 对象中定义的。所以输出结果会是 "Hello, C知道!"。
相比之下,如果我们将箭头函数改为普通函数:
```javascript
const obj = {
name: 'C知道',
greet: function() {
setTimeout(function() {
console.log(`Hello, ${this.name}!`);
}, 1000);
}
};
obj.greet();
```
此时,普通函数内部的 this 指向的是调用时的上下文,即全局对象(在浏览器中是 window)。因此,输出结果会是 "Hello, undefined!",因为全局对象中并没有 name 属性。
总结起来,箭头函数的 this 指向是静态的,由定义时所在的父级作用域决定。这使得箭头函数在处理回调函数或使用 this 时更加方便。
箭头函数this指向
箭头函数的 this 指向是在定义函数时确定的,而不是在运行时确定的。箭头函数没有自己的 this 绑定,它会继承外层作用域的 this 值。这意味着箭头函数内部的 this 与外部的 this 是一致的,与箭头函数被调用的方式无关。
相反,普通函数的 this 指向是在函数被调用时根据调用方式动态确定的。通常情况下,this 的值取决于调用函数的对象。
这是一个箭头函数和普通函数的示例来说明它们之间的差异:
```javascript
const obj = {
name: "C知道",
arrowFunc: () => {
console.log(this.name); // undefined
},
regularFunc: function() {
console.log(this.name); // C知道
}
};
const arrowFunc = obj.arrowFunc;
const regularFunc = obj.regularFunc;
arrowFunc();
regularFunc();
```
在箭头函数中,this.name 打印出 undefined,因为箭头函数继承了外层作用域的 this(在此示例中为全局对象,即 Window 对象),而全局对象没有 name 属性。
而在普通函数中,this.name 打印出 "C知道",因为它的 this 绑定是根据调用方式动态确定的,而在此示例中该函数是作为 obj 对象的方法调用的,所以 this 绑定到了 obj 对象。
总结起来,箭头函数的 this 是静态的,继承自外层作用域的 this;而普通函数的 this 是动态的,根据调用方式决定。