举例说明js立即执行函数的写法有哪些?

JS立即执行函数表达式 (IIFE - Immediately Invoked Function Expression) 有几种常见的写法,它们的核心思想都是创建一个函数表达式,然后立即执行它。以下是几种写法及示例:

1. 使用圆括号包裹函数表达式:

这是最常见的一种写法,用一对圆括号 () 包裹函数表达式,然后在末尾添加另一对圆括号 () 来立即执行它。

(function() {
  console.log("Hello from IIFE!");
})();

2. 使用一元运算符:

可以使用一元运算符,例如 !+-~ 等,将函数表达式转换为表达式,然后立即执行。

!function() {
  console.log("Hello from IIFE!");
}();

+function() {
  console.log("Hello from IIFE!");
}();

-function() {
  console.log("Hello from IIFE!");
}();

~function() {
  console.log("Hello from IIFE!");
}();

3. 使用void运算符:

void 运算符会计算表达式并返回 undefined

void function() {
  console.log("Hello from IIFE!");
}();

带参数的IIFE:

所有上述写法都可以传递参数给IIFE:

(function(name) {
  console.log("Hello, " + name + "!");
})("World"); // 输出: Hello, World!


!function(a, b) {
  console.log(a + b);
}(1, 2); // 输出: 3

ES6中的箭头函数:

虽然箭头函数本身不能直接作为IIFE使用,但是可以将其用圆括号包裹起来实现同样的效果:

(() => {
  console.log("Hello from IIFE using arrow function!");
})();

void (() => {
    console.log("Another IIFE with arrow function");
})();

选择哪种写法?

虽然以上几种写法都能实现相同的功能,但最常见和推荐的写法是使用圆括号 () 包裹函数表达式。这种写法清晰易懂,并且被广泛接受为IIFE的标准写法。 使用一元运算符的写法较为简洁,但可读性略逊一筹。

IIFE 的作用:

  • 创建私有作用域: IIFE 最主要的作用是创建私有作用域,避免变量污染全局命名空间。在IIFE内部定义的变量和函数不会泄漏到全局作用域。
  • 避免命名冲突: 在多人协作开发时,使用IIFE可以有效避免命名冲突。
  • 创建模块: IIFE 可以用来创建模块化的代码,将相关的代码封装在一个独立的单元中。

希望这些例子能帮助你理解JS立即执行函数的各种写法。

posted @ 2024-12-08 06:17  王铁柱6  阅读(89)  评论(0编辑  收藏  举报