JavaScript箭头函数与普通函数的核心区别解析
作者:纸飞机时间:2026-10-24 14:52:16浏览:461
本文详细对比JavaScript中箭头函数与普通函数的区别,涵盖语法简化、this绑定机制、arguments处理、构造函数限制及原型属性等关键差异,帮助开发者准确选择函数定义方式。
本文详细解析JavaScript中箭头函数与普通函数的核心差异,供开发者参考。
箭头函数示例:
let fun = () => {
console.log('lalalala');
}
普通函数示例:
function fun() {
console.log('lalla');
}
箭头函数本质上是匿名函数,其语法更为简洁。它支持两种格式:若仅包含单一表达式,可省略花括号{ ... }及return语句;若包含多条语句,则必须保留花括号和return。
作为匿名函数,箭头函数无法充当构造函数,因此不能使用new关键字进行实例化。
let FunConstructor = () => {
console.log('lll');
}
let fc = new FunConstructor();

箭头函数内部不绑定arguments对象,需借助rest参数(...)来接收剩余参数。
function A(a){
console.log(arguments);
}
A(1,2,3,4,5,8); // [1, 2, 3, 4, 5, 8, callee: ƒ, Symbol(Symbol.iterator): ƒ]
let B = (b)=>{
console.log(arguments);
}
B(2,92,32,32); // Uncaught ReferenceError: arguments is not defined
let C = (...c) => {
console.log(c);
}
C(3,82,32,11323); // [3, 82, 32, 11323]
箭头函数不绑定自身的this值,而是捕获定义时所在上下文的this值,并将其作为自身的this值。
var obj = {
a: 10,
b: () => {
console.log(this.a); // undefined
console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
},
c: function() {
console.log(this.a); // 10
console.log(this); // {a: 10, b: ƒ, c: ƒ}
}
}
obj.b();
obj.c();
var obj = {
a: 10,
b: function(){
console.log(this.a); //10
},
c: function() {
return ()=>{
console.log(this.a); //10
}
}
}
obj.b();
obj.c()();
通过call()或apply()方法调用箭头函数时,即使传入参数,也不会改变this的指向。
let obj2 = {
a: 10,
b: function(n) {
let f = (n) => n + this.a;
return f(n);
},
c: function(n) {
let f = (n) => n + this.a;
let m = {
a: 20
};
return f.call(m,n);
}
};
console.log(obj2.b(1)); // 11
console.log(obj2.c(1)); // 11
箭头函数不具备prototype属性。
var a = ()=>{
return 1;
}
function b(){
return 2;
}
console.log(a.prototype); // undefined
console.log(b.prototype); // {constructor: ƒ}
箭头函数不能用作Generator函数,因此不支持yield关键字。
总结
- 箭头函数的this始终指向其定义时的上下文,任何调用方法(如call()、bind()、apply())均无法改变这一指向。
- 普通函数的this指向调用该函数的对象。
以上内容为本文全部要点,希望能为您的学习提供助力,欢迎继续支持本站。
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
