求帮助!!
使用function的写法this为什么会指向undefined呢?
以下是chat的回答,但是感觉并不对
不出
--------补充一下因为上面问题引发的this学习--------
箭头函数与普通函数在如何处理 this 上有一个重要的区别。箭头函数会继承其外部作用域的 this 值,而普通函数的 this 则取决于函数被调用的方式。
这种行为是箭头函数的一个特性,被称为词法作用域绑定(lexical scope binding) ,它使得箭头函数的 this 始终与外部作用域的 this 保持一致。
在箭头函数中,不会创建自己的 this,而是会从最近的外部函数中继承 this 值。这意味着,如果箭头函数是在一个普通函数内部定义的,它将继承该普通函数的 this 值,而不受该箭头函数被调用的方式的影响。
这样的特性在处理回调函数时非常有用,因为它可以避免在回调函数内部丢失对正确的上下文的引用。
示例`:function outerFunction() { this.name = 'Outer';
// 使用箭头函数定义内部函数
const innerArrowFunction = () => {
console.log(this.name); // 输出 "Outer"
};
// 使用普通函数定义内部函数
const innerRegularFunction = function() {
console.log(this.name); // 输出 "Inner"
};
innerArrowFunction();
innerRegularFunction();}
const obj = {
name: 'Inner',
outerFunction: outerFunctio
};
obj.outerFunction();
在这个示例中,outerFunction 内部定义了两个函数:innerArrowFunction和innerRegularFunction。当调用这两个函数时,innerArrowFunction输出的是外部函数的this,而 innerRegularFunction输出的是调用它的对象的this`。