转载:https://blog.csdn.net/guodengh/article/details/48372801

我们都知道,函数的声明方式有这两种

function fnA(){alert('msg');}//声明式定义函数
var fnB = function(){alert('msg');}//函数赋值表达式定义函数

函数的调用方式通常是FunctionName()

但是,如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解的。

function msg(){alert('message');
}();//解析器是无法理解的

定义函数的调用方式应该是 msg(); 那为什么将函数体部分用()包裹起来就可以了呢?

原来,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式的作法,都可以使解析器正确的调用定义函数。而 ! 就是其中一个,而 + - || ~都有这样的功能。

另外,用 ! 可能更多的是一个习惯问题,不同的运算符,性能是不同的。

// 这么写会报错,因为这是一个函数定义:
function() {}()// 常见的(多了一对括号),调用匿名函数:
(function() {})()// 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用
!function() {}()

立即执行函数-有关js里function前面加!相关推荐

  1. php function函数用法,js的function函数是什么?js中function的用法

    本篇文章给大家带来的内容是关于js的function函数是什么?js中function的用法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Function与函数 Function是 ...

  2. 【JS基础】立即执行函数表达式(自执行函数)

    立即执行函数表达式 立即执行函数表达式,大部分人也称为自执行函数. 自执行函数的写法 匿名函数 (function() {console.log(2) })() 具名函数 (function log( ...

  3. html自动执行函数,JS 自执行函数原理及用法

    js自执行函数,听到这个名字,首先会联想到函数.接下来,我来定义一个函数: function aaa(a,b){ return sum = a + b } 定义了一个名为aaa的函数,在里面可以计算两 ...

  4. 2020-06-28 html的实现页面锁屏 + css的BFC与float + js的立即执行函数写法 + 颜色搭配

    2020-06-28 题目来源:http://www.h-camel.com/index.html [html] 实现一个页面锁屏的功能 锁屏的最终效果就是退出登录,思路是 点击锁屏按钮等操作时 使t ...

  5. js 立即执行函数传参问题

    正确的执行函数写法如下: (function func(i) {console.log(i);})(j);(function func(i) {console.log(i);}(j));!(funct ...

  6. JS作用域、立即执行函数、闭包

    作用域 首先先介绍一下作用域等一些基础概念. 每个JavaScript函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供JavaScript引擎存取,[[scope]]就是其中一 ...

  7. IIFE(立即执行函数表达式)

    我们经常会看到这样的写法: ;(fuction () {// do something })() 这就是一个简单的IIFE(立即执行函数表达式,immediately-invoked function ...

  8. php 立即执行函数,关于javascrip的立即执行函数的解析

    这篇文章主要介绍了关于javascrip的t立即执行函数的解析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 概念: 立即执行函数顾名思义就是函数定义好之后立即执行. 函数表达式方式: ...

  9. (42)2021-03-01(物体运动、swiper软件、自执行函数)

    物体运动.swiper软件.自执行函数 (一).物体运动 一.物体运动 二.分享1 三.分享2 四.淡入淡出 五.缓冲运动 六.缓冲运动案例 七.多物体运动 八.offset的问题 九.多样式运动 十 ...

最新文章

  1. 【冰极峰教程系列之二】:牢不可破的九宫格布局
  2. 智慧农业物联网云平台方案
  3. i java_Java中的i++和i--
  4. 研究人员表示Wi-Fi WPA3有重多的安全漏洞
  5. 实现Datagrid分页
  6. P2257 YY的GCD
  7. git 常用commands(转)
  8. Android开发小技巧之商品属性筛选与商品筛选
  9. asp.net mvc(九)
  10. vue 父组件获取接口值传到子组件_vue 项目中 “父组件” 异步获取数据之后,传递给子组件不显示...
  11. 面向对象基础(继承类,抽象方法,接口,委托和事件)
  12. iOS 实现语音播报
  13. python 类的细节
  14. java 中如何临时保存某输入值_java笔记临时存放
  15. php实现高并发解决方案
  16. 蓝牙低功耗音频技术 -- 1 背景和遗产
  17. Hexo NexT 添加背景图片
  18. 【超图+CESIUM】【基础API使用示例】45、超图|CESIUM - 点光源设置
  19. RPL协议的原理与安全机制
  20. CTF杂项小结--沙窝李的王

热门文章

  1. 人员定位系统的市场应用价值
  2. 语音视频聊天时会产生爆音
  3. Adobe 数字出版解决方案 Digital Publishing Suite (Indesign 制作iPad电子书) 系列之二: 制作流程的介绍
  4. 【LeetCode 655】输出二叉树
  5. 中国反渗透膜阻垢剂市场行业现状分析及发展趋势预测报告2022-2028年
  6. Java基础 - 1 OOP思想
  7. 【成功解决】错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器
  8. ng-zorro table怎么更改滚动条样式
  9. 饿了么薅羊毛时刻正式开启
  10. 十年磨一剑,SparkSQL来一题!