JS 自执行函数原理及用法

JS自执行函数原理及用法

1. 什么是自执行函数

自执行函数是指在定义后立即执行的一种函数。

在 JavaScript 中,所有的函数都是对象,因此自执行函数本质上也是一个函数对象,只是这个函数对象定义后立即执行了。

自执行函数是利用函数作用域和闭包的特性,可以有效避免全局污染和变量名冲突。

2. 自执行函数的语法

自执行函数的语法非常简单,只需要在函数定义时在函数定义后添加一个括号即可。

(function() {
  // function body
})();

在这个语法结构中,圆括号内部不能包含函数名称,否则就变成了通过函数名称来调用函数,而不是定义并自动执行函数。

3. 自执行函数的用法

3.1. 避免全局变量污染

自执行函数可以用来封装一些代码,防止它们污染全局作用域。例如:

(function() {
  var message = "Hello, world!";
  alert(message);
})();

在这个例子中,代码被包裹在自执行函数中,因此其中定义的变量 message 不会影响到全局作用域,也不会和其他脚本产生冲突。

3.2. 把变量作用域限制在函数内部

在 JavaScript 中,变量的作用域是函数级别的,而不是块级别的。这意味着,如果一个变量在函数内部定义,它可以在该函数的任何位置访问到。

自执行函数可以用来把变量的作用域限制在函数内部。例如:

(function() {
  var message = "Hello, world!";
  function showMessage() {
     alert(message);
  }
  showMessage();
})();

在这个例子中,变量 message 被定义在自执行函数内部,它只能在自执行函数内部访问到。函数 showMessage 也是如此,它只能在自执行函数内部访问到。

4. 注意事项

4.1. 自执行函数必须使用括号包裹

在语法上,自执行函数必须使用括号将函数定义括起来,再加上一对括号,才能正确地执行自执行函数。

(function() {
  // function body
})();

同时也要注意,括号内部不能包含函数的名称,否则就是定义函数而非自执行函数。

4.2. 自执行函数的返回值可以被使用

自执行函数是一个普通的函数,因此你可以通过在括号内部插入参数,将返回值暴露出来并被外部使用。

例如:

var result = (function() {
  return "Hello, world";
})();
alert(result); // "Hello, world"

在这个例子中,自执行函数返回一个字符串 "Hello, world",该字符串被存储在变量 result 中,并可以在后面的代码中使用。

5. 示例

5.1. 在自执行函数中全局定义常量

(function() {
  const PI = 3.14;
  console.log(`PI is ${PI}`);
})();
console.log(PI); // 抛出一个未定义的异常

5.2. 在自执行函数中添加一个事件处理函数

(function() {
  var button = document.getElementById('my-button');
  button.addEventListener('click', function() {
    // 处理按钮点击事件的代码
    console.log("button clicked");
  });
})();

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS 自执行函数原理及用法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • asp.net 设置GridView的选中行

    当我们在使用ASP.NET开发Web应用程序时,经常会用到GridView控件来显示数据。在GridView中选中某一行并进行操作,是在Web开发中常见的需求。在这里,我将向您介绍一种完整的方法来实现在ASP.NET中设置GridView的选中行。该方法以C#语言为例进行示范。 1. 设置GridView的选中行 对于设置GridView的选中行,我们可以通…

    JavaScript 2023年6月11日
    00
  • vue router总结 $router和$route及router与 router与route区别

    下面来详细讲解一下 “vue router 总结 $router和$route及router与 router与route区别” 1. 什么是vue-router? Vue Router 是 Vue.js 官方的路由管理器。它与 Vue.js 核心深度集成,我们可以用 Vue.js 生成的组件结构快速构建 SPA,并且非常方便地管理应用程序的路由。Vue Ro…

    JavaScript 2023年6月11日
    00
  • js闭包和垃圾回收机制示例详解

    1. 什么是JavaScript闭包? 在JavaScript中,当一个函数访问到它定义的外部变量时,就创建了闭包。通俗的说,闭包就是一个函数和执行该函数的环境的组合体。 闭包的作用在于:可以将数据进行封装,使得外部无法访问到函数内部的数据,而只能通过暴露出的接口方法进行访问。这种特性很常见,比如函数库的实现、异步回调等等,都需要使用闭包。 下面是一个简单的…

    JavaScript 2023年6月10日
    00
  • 深入理解JavaScript系列(44):设计模式之桥接模式详解

    这里是“深入理解JavaScript系列(44):设计模式之桥接模式详解”的完整攻略: 什么是桥接模式? 桥接模式是一种结构型设计模式,旨在将一个大类或一系列紧密相关的类拆分成抽象和实现两个独立的维度。通过这种方式,可以在不改变客户端代码的前提下,动态地组合和切换不同的抽象和实现部分,以满足不同的需求。 桥接模式的核心是将抽象部分与实现部分分离,它使用了组合…

    JavaScript 2023年6月11日
    00
  • js中传递特殊字符(+,&)的方法

    当需要在JavaScript中传递特殊字符(+,&)时,可以使用URL编码方式来避免出现意外的错误。 URL编码指的是将字符串中的某些特殊字符,转换成%xx的形式。其中xx是字符对应的ASCII码的十六进制表示。使用encodeURI()方法可以对整个URL进行编码,而使用encodeURIComponent()方法则可以编码特定的参数。值得注意的是…

    JavaScript 2023年5月19日
    00
  • 浅析Java 对象引用和对象本身

    浅析 Java 对象引用和对象本身 在 Java 编程中,我们经常会涉及到对象的引用和对象本身的概念。这两者之间的关系非常密切,理解它们的作用和区别对于编写高质量的 Java 代码非常重要。 Java 对象引用 Java 中的对象引用指的是一个变量或表达式,该变量或表达式包含了对象的内存地址。简单来说,即是将对象的地址赋值给一个变量,以方便后续操作。 以下是…

    JavaScript 2023年6月10日
    00
  • 基于javascript如何传递特殊字符

    要在JavaScript中传递特殊字符,需要使用转义字符来表示这些字符。常见的特殊字符包括单引号、双引号、反斜杠、换行符、制表符等。以下是关于如何在JavaScript中传递特殊字符的步骤和示例代码: 使用反斜杠 在JavaScript中,使用反斜杠来转义特殊字符。例如,要在字符串中表示单引号,可以使用反斜杠对其进行转义。 示例代码: let str = ‘…

    JavaScript 2023年5月19日
    00
  • js canvas实现随机粒子特效

    下面我来详细讲解一下“js canvas实现随机粒子特效”的完整攻略。 1. 前言 在介绍如何使用canvas实现随机粒子特效之前,我们需要了解几个基本的概念。 HTML5 Canvas:HTML5中的一个重要新特性,允许直接在浏览器中使用JavaScript绘制2D图形。 requestAnimationFrame:在浏览器重绘之前执行指定的函数,以使动画…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部