JS箭头函数和常规函数之间的区别实例分析【箭头函数和常规函数之间的区别实例分析【 5 个区别】个区别】
主要介绍了JS箭头函数和常规函数之间的区别,结合实例形式分析了JS箭头函数和常规函数之间的 5 个区别与相
关使用注意事项,需要的朋友可以参考下
本文实例讲述了JS箭头函数和常规函数之间的区别。分享给大家供大家参考,具体如下:
在 JavaScript 中,你可以通过多种方式去定义函数。
第一种常用的方法是使用关键字 function:
// 函数声明
function greet(who) {
return `Hello, ${who}!`;
}
// 函数表达式
const greet = function(who) {
return `Hello, ${who}`;
}
代码中的函数声明和函数表达式被称为“常规函数”。
从 ES2015 开始,第二种可用的方法是
箭头函数
语法:
const greet = (who) => {
return `Hello, ${who}!`;
}
虽然两者的语法都能够定义函数,但是在开发时该怎么选择呢?这是个好问题。
在本文中,我将展示两者之间的主要区别,以供你能够根据需要选择正确的语法。
1. this 值值
1.1常规函数常规函数
在常规 JavaScript 函数内部,this 值(即执行上下文)是动态的。
动态上下文意味着 this 的值取决于如何如何调用函数。在 JavaScript 中,有 4 种调用常规函数的方式。
在简单调用简单调用过程中,this 的值等于全局对象(如果函数在严格模式下运行,则为 undefined ):
function myFunction() {
console.log(this);
}
// 简单调用
myFunction(); // logs global object (window)
在方法调用方法调用过程中,this 的值是拥有该方法的对象:
const myObject = {
method() {
console.log(this);
}
};
// 方法调用
myObject.method(); // logs "myObject"
在使用 myFunc.call(context, arg1, ..., argN) 或 myFunc.apply(context, [arg1, ..., argN]) 的间接调用中,this 的值等于第一个参数:
function myFunction() {
console.log(this);
}
const myContext = { value: 'A' };
myFunction.call(myContext); // logs { value: 'A' }
myFunction.apply(myContext); // logs { value: 'A' }
在使用关键字 new 的构造函数调用期间,this 等于新创建的实例:
function MyFunction() {
console.log(this);
}