Skip to content

什么是箭头函式 (Arrow Function)?跟一般的函式有什么差别

箭头函式是在 ES6 后出现的一种函式表现方式,虽然也是函式的一种,但有部分的特性是跟一般函式有差异的,在面试中属于高频题,需要特别注意。

箭头函式和一般函式差异 箭头函式和一般函式的主要差异有四点,我们将在下方详细说明:

  • 箭头函式语法不同、写法也较简洁
  • 箭头函式没有自己的 this、也无法直接修改 this 的指向
  • 箭头函式没有自己的 arguments
  • 箭头函式不能作为构造函式使用(没有原型)

JavaScript 立即调用函式 IIFE (Immediately Invoked Function Expression) 是什么?优缺点是什么?

JavaScript 中的立即调用函式 (IIFE,Immediately Invoked Function Expression),指的是一种在定义时立即执行的匿名函式,通常用于创建一个局部作用域,避免全局污染。

语法格式如下:

js
(function () {
  // Code to be executed
})();

优点

  • 创建局部作用域 通过使用 IIFE 可以创建一个局部作用域,避免全局变量的污染。以下代码可以看到,在 IIFE 中,有一个局部变量 localVariable。 localVariable 只能在 IIFE 内访问,不能在 IIFE 外访问,
  • 避免命名冲突 IIFE 可以为变量创建了一个单独的命名空间,避免函式名和变量名的冲突。
  • 模组化编程 IIFE 可以将代码分为独立的模组,方便了代码的管理和维护
  • 提高代码执行效率 IIFE 可以在定义时立即执行,避免了函式的不必要的存储和调用,提高了代码的执行效率。

缺点

尽管上述提到许多 IIFE(Immediately Invoked Function Expression)的优点,但也存在一些缺点,例如

  • 代码不易维护:当代码变得更加复杂时,IIFE 的代码容易变得庞大,不易于维护和阅读。
  • 不利于重复使用:IIFE 的代码通常是一次性的,无法复用,因此在需要多次调用时不太方便。
  • 增加代码复杂度:使用 IIFE 可能会使代码变得更加复杂,特别是当代码量很大时。