js自执行函数的几种不同写法的比较

让我们来详细讲解一下“js自执行函数的几种不同写法的比较”。

什么是自执行函数?

自执行函数,也被称为立即执行函数,是指在定义函数后立即调用该函数的一种方式,通常被用来封装一些特定的操作,避免变量污染全局作用域。

自执行函数的几种不同写法

写法一:使用小括号将函数包裹起来

(function () {
  // code goes here
})();

// 或者写成
(function () {
  // code goes here
}());

使用小括号将函数包裹起来是一种常见的自执行函数写法。这种写法不会产生任何错误,在代码压缩的时候也能有效地减少代码体积。

写法二:使用逻辑非

!function () {
  // code goes here
}();

// 或者写成
true && function () {
  // code goes here
}();

使用逻辑非也是一种常见的自执行函数写法。这种写法不会产生任何错误,在代码压缩的时候也能有效地减少代码体积。

写法三:使用void运算符

void function () {
  // code goes here
}();

// 或者写成
void function () {
  // code goes here
}();

使用void运算符也是一种常见的自执行函数写法。这种写法相比于前两种写法,会稍微增加一些代码体积,但是依然能够很好地达到效果。

自执行函数的注意事项

  • 自执行函数中的变量仅在自执行函数内部可见,不会污染全局作用域。
  • 自执行函数的返回值可以被外部调用所使用。
  • 自执行函数只需要被定义和执行一次,后续不会被再次使用。

示例说明

示例一:使用小括号的自执行函数

(function () {
  var name = 'John';

  (function () {
    var name = 'Mary';
    console.log('Inside inner function:', name);
  })();

  console.log('Inside outer function:', name);
})();

console.log('Outside both functions:', name);

在该示例中,我们使用了小括号的自执行函数来封装了两个函数。在内部函数中,我们定义了一个叫做name的变量,并将其赋值为Mary,然后将其输出。在外部函数中,我们同样定义了一个叫做name的变量,并将其赋值为John,然后将其输出。在函数外部输出name变量时,会发现变量name在外部是无法访问到的。

示例二:使用逻辑非的自执行函数

!function () {
  var count = 0;

  var intervalId = setInterval(function () {
    count++;
    console.log('Count:', count);

    if (count === 5) {
      clearInterval(intervalId);
    }
  }, 1000);
}();

在该示例中,我们使用了逻辑非的自执行函数来实现一个计数器。在函数内部,我们使用了setInterval函数来定时输出计数器的值,并在计数器到达5的时候停止输出。在函数外部没有定义任何变量,也不需要访问到计数器的值,因此使用逻辑非的自执行函数可以很好地满足我们的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js自执行函数的几种不同写法的比较 - Python技术站

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

相关文章

  • 基于Html+CSS+JS实现手动放烟花效果

    下面我将为您详细讲解基于Html+CSS+JS实现手动放烟花效果的完整攻略。 需求分析 为了实现手动放烟花效果,需要实现以下功能: 通过点击页面添加烟花; 每个烟花需要有不同的颜色和大小; 烟花需要能够在页面上随机位置爆炸,并播放烟花爆炸动画; 烟花爆炸效果需要自动消失,不占用页面空间; 页面需要考虑到不同的屏幕大小,能够自适应。 技术实现 HTML 在 H…

    JavaScript 2023年6月11日
    00
  • JS冷知识之不起眼但有用的String.raw方法

    下面是关于JS中String.raw方法的详细讲解。 String.raw方法是什么 String.raw 是一个 ES6 引入的模板字符串的标签函数(tagged template)。当标签函数使用在模板字符串上时,该模板字符串中所有的转义字符都不会被转义,而是作为字符串的普通字符被输出。 用法示例 下面我们通过两个实际的示例来说明 String.raw …

    JavaScript 2023年5月28日
    00
  • JS对象创建与继承的汇总梳理

    让我来为你详细讲解JavaScript对象创建与继承的相关知识,包含以下几个方面: 对象的创建方式 原型与原型链 构造函数与类的继承 ES6中的class关键字 1. 对象的创建方式 对象字面量 对象字面量是创建对象的一种简单方式,通过使用{}标记来生成对应的对象。例如: var person = { name: "张三", age: 1…

    JavaScript 2023年5月27日
    00
  • js动态生成form 并用ajax方式提交的实现方法

    下面我将为你详细讲解“js动态生成form 并用ajax方式提交的实现方法”的完整攻略。 1. 创建Form表单 通过JavaScript代码创建一个空白的表单对象,可以通过以下方式: var form = document.createElement(‘form’); 接下来设置表单的相关属性,例如表单的方法、action、enctype等,示例代码如下:…

    JavaScript 2023年6月11日
    00
  • JavaScript浮点数及运算精度调整详解

    JavaScript浮点数及运算精度调整详解 概述 在JavaScript中,使用浮点数进行运算时会出现精度不准确的情况,这是由于JavaScript中的浮点数采用二进制存储,在进行运算时会出现舍入误差的情况。本文将详细讲解浮点数精度问题,以及如何调整浮点数运算的精度来避免误差。 浮点数精度问题 在JavaScript中,浮点数采用IEEE 754标准进行存…

    JavaScript 2023年6月10日
    00
  • 一文带你简单封装JS下的异步任务对象

    下面是关于“一文带你简单封装JS下的异步任务对象”的完整攻略。 前言 异步编程到现在已经是一个非常成熟的概念,并且也是前端开发中非常重要的一环。在JavaScript中,常见的异步操作包括网络请求、读写文件等。但是在异步操作中,由于异步事件的不确定性,使得相关代码比同步代码更难以理解、调试以及维护。为了更优雅地解决这个问题,我们可以使用异步任务对象的方式来封…

    JavaScript 2023年6月10日
    00
  • HTML5中使用postMessage实现Ajax跨域请求的方法

    HTML5中使用postMessage实现Ajax跨域请求的方法可以通过以下步骤实现: 在发送请求的页面中,使用postMessage方法向目标页面发送消息,携带需要请求的数据。 // 定义消息内容 var requestData = { dataType: ‘json’, url: ‘http://example.com/api/data’, data: …

    JavaScript 2023年6月11日
    00
  • 公众号SVG动画交互实战代码

    “公众号SVG动画交互实战代码”是一篇涉及到SVG动画实战的代码攻略。本攻略主要介绍了如何使用HTML、CSS、JavaScript和SVG语言来实现有趣、动态的SVG动画,并添加了交互效果。 准备工作 在开始动手之前,有几个准备工作必须要完成。首先,我们需要一个能够编辑代码的文本编辑器,比如Sublime Text、VS Code等。其次,我们需要一些基本…

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