美文网首页
前端面试js篇:es6中的箭头函数有哪些特点?

前端面试js篇:es6中的箭头函数有哪些特点?

作者: 5cc9c8608284 | 来源:发表于2024-03-24 09:21 被阅读0次

箭头函数是 ES6 引入的一种新的函数声明方式,具有以下几个特点:

1.简洁语法:

使用 => 表示函数定义,如 (param1, param2) => expression 或 () => { statements }。
如果函数体仅包含一个表达式且无需额外的代码块,可以省略大括号 {},此时返回值为该表达式的计算结果。

2.自动返回:

当函数体只有一条语句时,可以省略 return 关键字和花括号。例如:x => x * x 相当于 function(x) { return x * x; }。

3.this绑定:

箭头函数不创建自己的 this 值,它会捕获其所在上下文(lexical context)的 this 值。这意味着箭头函数没有独立的 this 指向,无论以何种方式调用,this 的指向都是固定的,这与普通函数不同,普通函数的 this 值是在运行时动态绑定的,而箭头函数的 this 值是词法上确定的,即箭头函数定义时所在的作用域中的 this 值,而不是执行时的作用域。

4.无arguments对象:

箭头函数没有自己的 arguments 对象,不能通过 arguments 访问传入函数的参数。如果需要访问所有参数,必须显式使用剩余参数语法 (...args)。
例如在箭头函数中使用剩余参数:

const add=(a,b,...args)=>{
  console.log(args,'args');//[3, 4, 5]
  return a+b+args.reduce((pre,cur)=>pre+cur,0)
}
console.log(add(1,2,3,4,5))//15

5.无法作为构造函数:

因为箭头函数没有 [[Construct]] 内部方法,因此不能使用 new 关键字来调用,所以它不能被用作构造函数。

6.不支持call、apply和bind方法改变this:

箭头函数中的 this 不可变,因此 call(), apply() 和 bind() 方法对箭头函数无效,它们无法更改箭头函数内部 this 的指向。

7.无原型属性:

箭头函数没有 prototype 属性,因为它们不是构造函数。

8.参数处理:

若箭头函数只有一个参数,则可以省略参数小括号 ();如果有多个参数或者没有参数,则必须使用括号包裹起来。例如:单一参数 => 单一处理,多个参数 => (param1, param2) => 处理,无参数 => () => 表达式或语句块。

9.箭头函数不能使用 yield 关键字用作生成器函数。

相关文章

网友评论

      本文标题:前端面试js篇:es6中的箭头函数有哪些特点?

      本文链接:https://www.haomeiwen.com/subject/ydkxtjtx.html