iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript基础之立即执行函数
  • 112
分享到

JavaScript基础之立即执行函数

2024-04-02 19:04:59 112人浏览 八月长安
摘要

目录立即执行函数格式立即执行函数其他方式–表达式立即执行函数可以带参数应用总结在javascript中有时候看到一些很神奇的函数比如下面截图: 这种函数只要浏览器加载的时候会自动运

javascript中有时候看到一些很神奇的函数比如下面截图:

在这里插入图片描述

这种函数只要浏览器加载的时候会自动运行,而需要调用,前面在闭包的时候也说过这种函数,一般将其称之为:立即执行函数。

立即函数的特征:

  • 会自动执行
  • 只会执行一次

立即执行函数格式

立即执行函数一般有格式如下:


# 格式一(//W3C 推荐这种写法)
(function (){
 }())
 
#格式二 (但是这个才是最常用的方式之一)
(function (){
 })();
 

其实上面还可以看出立即执行函数,一般都不会写函数名字,其意义不大,毕竟立即函数不必通过函数名进行调用了,这个和字面量定义函数的时候作用差不多。

现在结合闭包和立即执行函数相互结合来一个例子:


var fun=(
function(){
  function test(a,b){
      console.log(a+b);
  }    
  return test;
}
)()
 

在这里插入图片描述

立即执行函数其他方式–表达式

上面的立即执行函数的格式定义,但是还有其他方式实现这个功能,比如下面这个就不是上面的格式


!function(){
    console.log("test");
}()

在这里插入图片描述

看出其输出的两行,第一个是test,也就是有种立即执行函数的结果,而true被输出是是因为前面多了!,这个在隐式转换的时候说过,在!后面的都会强制换行布尔类型。

现在又有一个疑问了,为什么这种方式可以实现呢?

分析这种情况的产生,首先来一个表达式函数:


var test=function(){
    console.log("test表达式")
}
#这样声明后,如何使用呢?如下
test();
 

在这里插入图片描述

这个时候就有一个大胆的想法了,赋值的函数,通过变量值+()就可以执行,那为什么不能直接写好。


var test=function(){
    console.log("test表达式")
}()

在这里插入图片描述

这地方可以看出 表达式函数也有了一种立即执行的效果。

(补充:为什么都有undefined,因为这个函数本身就没有return 值,所以会有undefined这个值在浏览器console面板输出了undefined)

那直接在函数后面放括号可以吗?


function(){
    console.log("test表达式")
}()

在这里插入图片描述

可以看出需要用表达式前提才可以在后面放(),不然会报错。

这个时候就有了一个大胆的想法,其实!后面方法,其实将函数转换成立表达式函数,所以后面可以+()可以直接运行了。那就有了大胆的想法,既然如此那直接在函数前加一个加号(+)试试。


+function(){
    console.log("test表达式")
}()
 

在这里插入图片描述

既然加号可以那么:

+ -
~

当然所谓的乘号和除号是无法实现的,还有一个神奇的关键字也可以有这个神奇的效果,那就是new 和 void


new function(){
    console.log("test表达式")
}()

在这里插入图片描述

还有一个那就是量逻辑运算符号 || 和&& 也可以实现

不过这个需要根据其特征再前面需要加真或者假才可以,单独使用是不可以的


1 && function(){
    console.log("test表达式")
}()
 或者
0 || function(){
    console.log("test表达式")
}()
 

在这里插入图片描述

还有一个神奇的符号(逗号)也可以实现这个功能:


1,function(){
    console.log("test表达式")
}()
 

在这里插入图片描述

可以看出如果使用逗号,无论前面真假都会执行后面的表达式函数。

立即执行函数可以带参数

立即执行函数也可以有参数的,具体如下


(function(a,b){
    console.log(a,b)
})(1,2)
 

在这里插入图片描述

应用

这个题是很经典的面试题,首先创建下一个html


<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>test</title> 
</head>
<body>
<ul id=”test”>
    <li>这是第一条</li>
     <li>这是第二条</li>
    <li>这是第三条</li>
 </ul>
<script>
  var liList=document.getElementsByTagName('li');
     for(var i=0;i<liList.length;i++)
     {
         liList[i].onclick=function(){
             console.log(i);
         }
     };
</script>
 </body>
</html>

目的是点击第几个标签li 输出几,但是结果

在这里插入图片描述

因为在点击li的时候for循环早已循环完毕了,这个可以用前面所学的let,关键字也可以解决


  var liList=document.getElementsByTagName('li');
     for(let i=0;i<liList.length;i++)
     {
         liList[i].οnclick=function(){
             console.log(i);
         }
     };

在这里插入图片描述

这个可以解决这个问题,但是没有用到立即运行函数,当然也可以通过立即执行函数进行修改


 var liList=document.getElementsByTagName('li');
     for(let i=0;i<liList.length;i++)
     {  (function(a){
        liList[a].οnclick=function(){
             console.log(a);
         } 
      })(i)
      };

在这里插入图片描述

可以看出立即执行函数会形成一个自己的封闭空间,其不会被外部的其他变量影响,其实这个如果再有一个return的话就是一个标准的闭包了。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: JavaScript基础之立即执行函数

本文链接: https://www.lsjlt.com/news/157198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript基础之立即执行函数
    目录立即执行函数格式立即执行函数其他方式–表达式立即执行函数可以带参数应用总结在JavaScript中有时候看到一些很神奇的函数比如下面截图: 这种函数只要浏览器加载的时候会自动运...
    99+
    2024-04-02
  • JavaScript立即执行函数用法解析
            我们知道,在一般情况下,函数必须先调用才能执行,如下所示,我们定义了一个函数,并且调用, fu...
    99+
    2024-04-02
  • Javascript立即执行函数(IIFE)实例详解
    目录前言函数表达式立即执行函数如果我们了解整个情况:IIFE 的特征/行为附:IIFE的参数总结前言 IIFE,一般称为立即执行函数。你可能会问我,*“嘿!我知道正常的函...
    99+
    2024-04-02
  • JavaScript立即执行函数与函数劫持的作用
    目录一、立即执行函数1、实现方式2、立即执行函数的作用3、使用场景4、返回值5、带单目运算符的立即执行函数二、函数劫持一、立即执行函数 立即执行函数(IIFE):在函数声明后立即调用...
    99+
    2023-01-11
    JS立即执行函数 JS函数劫持
  • JavaScript中立即执行函数格式有哪些
    这篇文章主要介绍JavaScript中立即执行函数格式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在JavaScript中有时候看到一些很神奇的函数比如下面截图:这种函数只要浏览器加载的时候会自动运行,而需要...
    99+
    2023-06-25
  • JavaScript立即执行函数的用法是什么
    JavaScript立即执行函数的用法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。       ...
    99+
    2023-06-22
  • javascript立即执行函数表达式IIFE的示例分析
    这篇文章主要为大家展示了“javascript立即执行函数表达式IIFE的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript立即执行函数...
    99+
    2024-04-02
  • JavaScript基础之函数详解
    目录一、函数简介1.1.函数的创建1.2.函数的参数和返回值二、函数的类型2.1. 构造函数2.2. 立即执行函数2.3. 构造函数的原型prototype2.4. 函数中的this...
    99+
    2024-04-02
  • 在ES5环境下立即执行函数的示例分析
    在ES5环境下立即执行函数的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。立即执行函数常用于第三方库,它可以用来隔离变量作用域,很...
    99+
    2024-04-02
  • JS怎么实现动态插入并立即执行回调函数
    这篇文章主要讲解了“JS怎么实现动态插入并立即执行回调函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS怎么实现动态插入并立即执行回调函数”吧!具体代码如下:<!DOCTYPE&n...
    99+
    2023-07-04
  • JavaScript基础学习之splice()函数详解
    目录splice()函数详解一、情况一(只有一个参数)二、情况二 (两个参数)三、情况三 (大于等于三个参数)总结splice()函数详解 splice() 方法向/从数组中添加/删...
    99+
    2024-04-02
  • python基础之函数
    函数: # 什么是函数:一系列python语句的组合,可以在程序中运行一次或者多次 # 一般是完成具体的独立的功能 # 为什么要使用函数 # 代码的复用最大化以及最小化冗余代...
    99+
    2024-04-02
  • JavaScript如何立即调用函数表达式
    小编给大家分享一下JavaScript如何立即调用函数表达式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!立即调用函数一、了解立即调用函数表达式1.1 思维导图1...
    99+
    2023-06-14
  • python之基础篇(十)——执行环境与
    防伪码:忘情公子著解释器环境与选项  python解释器启动:python [options] [-c cmd | filename | - ] [args]选项描述-3启用将从python3中删除或更改某些功能的警告-B阻止在导入时创建....
    99+
    2023-01-31
    环境 基础 python
  • Python基础之(七)函数
    建立函数 在Python中,规定了一种定义函数的格式,下面的举例就是一个函数,以这个函数为例来说明定义函数的格式和调用函数的方法。 def add_function(a, b): #冒号必须 c = a + b #缩进必须 ...
    99+
    2023-01-31
    函数 基础 Python
  • JavaScript基础系列之函数和方法详解
    目录一、函数和方法的区别二、如何写好一个函数2.1 命名准确2.1.1 函数命名2.1.2 参数命名2.2 函数注释2.2.1 参数注释2.3  函数参数2.3.1 参数默...
    99+
    2024-04-02
  • JavaScript基础函数有哪些
    本篇内容介绍了“JavaScript基础函数有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、时...
    99+
    2024-04-02
  • javascript函数式编程基础
    目录一、引言二、什么是函数式编程三、纯函数(函数式编程的基石,无副作用的函数)四、函数柯里化五、函数组合六、声明式和命令式代码七、Point Free八、示例应用九、总结 一、引言...
    99+
    2024-04-02
  • python基础之内置函数
    https://docs.python.org/3/library/function.html #python官方网址 # 取绝对值 print(a...
    99+
    2024-04-02
  • Mysql基础之常见函数
    目录一、常见函数分类1.1单行函数:1.2分组函数:二、单行函数三、数学函数四、日期函数五、其他函数六、控制函数一、常见函数分类 1.1单行函数: 字符函数 字符控...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作