JS中[感叹号]function(){}()的理解

2023-05-16

这种写法,是一种`立即执行函数`的写法,即IIFE等设计模式。这种函数在函数定义的地方就直接执行了。

理解IIFE设计模式的关键是要认识到,在ES6之前,JavaScript仅具有函数作用域(因此缺少块作用域),并通过闭包内部的引用传递值。ES6之后情况已不再如此,因为JavaScript的ES6版本使用let和const关键字实现了块作用域。

(function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环境,增加代码的兼容性。

(function(){})是一个标准的函数定义,但是没有赋值给任何变量。所以是没有名字的函数,叫匿名函数。没有名字就无法像普通函数那样随时随地调用了,所以在他定义完成后就马上调用他,后面的括号()是运行这个函数的意思。

如下几种写法作用是相同的:

!function () { /* ... */ }();
~function () { /* ... */ }();
-function () { /* ... */ }();
+function () { /* ... */ }();
void function () { /* ... */ }();
(function (){/*...*/}());
(function (){/*...*/})();

所以: !function(){}写法和(function(){})()是相同的

!function(){}()

1.函数后的();表示要执行这个函数;

2.而();要求前面必须是一个表达式。(最后有js表达式的定义)。

3.所以"!"的作用是将function(){}函数体转为一个函数表达式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS中[感叹号]function(){}()的理解 的相关文章

随机推荐

  • SDIO读写SD卡速度有多快?

    前两天测试了SPI方式读写SD卡的速度 SPI方式读写SD卡速度测试 xff0c 今天来测试一下SDIO方式的读写速度 测试条件 xff1a 单片机 xff1a STM32F407VET6 编译环境 xff1a MDK 5 30 43 HA
  • STM32CubeMx+HAL库实现USB CDC+MSC复合设备

    之前的文章中介绍过STM32的USB应用 xff0c 包括虚拟串口 xff08 CDC xff09 和大容量存储设备 xff08 MSC xff09 今天来介绍USB实现CDC和MSC复合设备的方法 硬件 xff1a STM32F407VE
  • 基于STM32CubeMx的USB CDC+MSC复合设备

    之前的文章中介绍过STM32的USB应用 xff0c 包括虚拟串口 xff08 CDC xff09 和大容量存储设备 xff08 MSC xff09 今天来介绍USB实现CDC和MSC复合设备的方法 硬件 xff1a STM32F407VE
  • go标准库httputil.ReverseProxy简单介绍和使用避坑

    很久没水博客了 xff0c 今天就来水一篇 xff0c 说说go标准库的httputil ReverseProxy httputil ReverseProxy顾名思义 xff0c http的反向代理 xff0c 可以类比nginx的反向代理
  • (二)Ardupilot软件分析及代码架构

    先要搞明白ardupilot是怎么实现飞行控制的 xff1f 然后再看文件 1 建立两个基本坐标系 xff1a 地理坐标系和载体坐标系 xff0c 保证两个基本坐标系的正确转化 一般使用旋转矩阵实现坐标系转换 xff1a 四元数运算 q01
  • STM32F103 实例应用——实现透传转发串口

    一 预期准备 实现机制 xff1a 空闲中断 43 DMA中断接收不定长串口数据 开发工具 xff1a STM32F103芯片 xff0c keil5 xff0c usb转ttl工具 预计实现效果 xff1a 串口1接收数据然后透传给串口2
  • 解决:ORA-06550 字符串长度限制在范围 (1...32767)

    错误信息 ORA 06550 第 1 行 第 782 列 PLS 00215 字符串长度限制在范围 1 32767 解决 本例是配置存储过程job的job action 61 gt 39 Declare FLAG Number 20 FAI
  • gcc、make、makefile、cmake、cmakelists区别

    转自 xff1a http www zhihu com question 36609459 辉常哥 1 gcc是GNU Compiler Collection xff08 就是GNU编译器套件 xff09 xff0c 也可以简单认为是编译器
  • FIFO和DMA

    FIFO SPI端口增加了FIFO xff0c 使得传输数据有了缓冲区间 FIFO存储器是一个先入先出的双口缓冲器 xff0c 即第一个进入其内的数据第一个被移出 xff0c 其中一个存储器的输入口 xff0c 另一个口是存储器的输出口 主
  • 蓝桥杯C语言基础练习 十进制转十六进制

    代码 xff08 解法类似十进制转二 八进制 xff09 include lt stdio h gt char getnum int z switch z case 0 return 39 0 39 break case 1 return
  • Linux和Windows下使用printf的差别

    1 Linux系统下 一般而言 xff0c 大家都知道printf是带有行缓冲的函数 xff0c printf把打印的消息先输出到行缓冲区 xff0c 在以下几种情况下 xff1a 1 程序结束时调用exit 0 return xff1b
  • Could not connect ot Redis No route to host问题解决

    局域网内访问另外一台服务器上的redis 报错 Could not connect to Redis No route to host 问题解决 发现是防火墙问题 于是设置 iptables N REDIS iptables A REDIS
  • 大数据挑战赛-鼠标轨迹识别

    大数据挑战赛 鼠标轨迹识别 xff0c 竞赛官网 xff1a http bdc saikr com c cql 34541 1 我们看一下整个竞赛的详情 赛题描述 鼠标轨迹识别当前广泛运用于多种人机验证产品中 xff0c 不仅便于用户的理解
  • 暴力破解字典列表

    GitHub上的 xff1a https github com danielmiessler SecLists tree master Passwords Leaked Databases https github com duyetdev
  • Burpsuite技巧之MD5加密密码爆破、带验证码爆破

    一 Burpsuite技巧之MD5加密密码爆破 现在有很多后台都不再是明文传输 xff0c 改成了各种各样的加密方式 今天就拿MD5加密方式做一个演示 xff0c 举一反三 xff0c 希望对新手有用 如图 xff0c MD5加密了密码 x
  • 解决ubuntu连不上网络,输入ifconfig只显示本地环回问题

    使用虚拟机打开ubuntu后发现无法连接网络 首先我使用了ping www baidu com 然后通过命令sudo service network manager restart重启服务后仍然没有用 于是输入命令ifconfig查看网卡
  • https://mp.weixin.qq.com/s/ilO6DZwRpWdrruKm4J8CMw

    近日安全漏洞频发 xff0c 小编在此收集了近期大家会比较关注的漏洞 xff0c 做个总结 xff0c 供大家查漏补缺 xff0c 若有缺失 xff0c 欢迎留言补充 目录 一 OA系统 二 E mail 三 Web中间件 四 源代码管理
  • 浅谈JavaScript、ES5、ES6

    什么是JavaScript JavaScript一种动态类型 弱类型 基于原型的客户端脚本语言 xff0c 用来给HTML网页增加动态功能 xff08 好吧 xff0c 概念什么最讨厌了 xff09 动态 xff1a 在运行时确定数据类型
  • js声明变量的三种方式

    JS 声明变量的三种方式 xff08 1 xff09 使用变量步骤 xff1a a 声明 gt b 赋值 gt 3 调用 正确用法 xff1a lt script type 61 34 text javascript 34 gt 方式一 x
  • JS中[感叹号]function(){}()的理解

    这种写法 xff0c 是一种 96 立即执行函数 96 的写法 xff0c 即IIFE等设计模式 这种函数在函数定义的地方就直接执行了 理解IIFE设计模式的关键是要认识到 xff0c 在ES6之前 xff0c JavaScript仅具有函