首先,问题的关键在于理解三个操作符,分别是:

  1. 一元运算符中的逻辑非运算符(!)和按位非运算符(~)

  2. 圆括号操作符

  3. 逗号操作符

在本例中,首先声明函数的一般形式为:

function [name]([param1[, param2[, ..., paramN]]]) {statements
}

而如果省略掉这个[name],就变成了匿名函数。但是匿名函数单独写的话就会报错:

为了让它成为合法的表达式,这时就需要一元运算符了:

这时这个表达式就合法了。但是这时它还只是一个静态的表达式,而我们的目的是直接运行内容求值,所以就需要圆括号操作符,变成~function(){}()这种形式,花括号“{}”里面是写的具体的运行内容,第一个圆括号表示声明一个匿名函数,如果不加上第二个圆括号,它仅仅是一个声明表达式,即使花括号里面有内容,也不会被解释器执行,想要让解释器看到这个函数就立即执行,那么这就是后面那个圆括号的作用了,而如果需要很多个批量写呢,再加上逗号操作符,变成:

~function(){}(),
!function(){}(),
!function(){}();

这样就是题中的形式了。

js 中 ! + - ~ 符号和匿名函数相关推荐

  1. js中(function(){…})()立即执行函数写法理解

    js中(function(){-})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ...

  2. 如何在 C#9 中使用 static 匿名函数

    匿名函数 在 C# 中已经出现很多年了,虽然匿名函数用起来很爽,但代价是不小的,为了避免不必要那些你意想不到的内存分配,这就是为什么 C#9 中引入 static 匿名函数的原因,这篇文章我们将会讨论 ...

  3. main.js中封装全局登录函数

    main.js中封装全局登录函数 1. 在 main.js 中封装全局登录函数 通过 vue 对象的原型扩展,可以扩展一个函数,这样这个函数就可以在 每一个界面通过类似指向对象的方式,去访问这个函数. ...

  4. java 匿名函数_Java中的lambda匿名函数使用

    Java中的lambda匿名函数使用 lambda匿名函数的使用是为了满足某些情况下需要临时定义函数,或者事先定义,需要时才使用.在python里面,lambda表达式的表达方式为:lambda 参数 ...

  5. 一木.溪桥学Python-09:函数的返回值、函数的作用域、作用域的优先级、递归函数、内置文件中常用方法、匿名函数lambda、高阶函数

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-09:函数的返回值.作用域.作用域的优先级.递归函数.内置文件中常用方法.匿名 ...

  6. php7 $this-,在PHP中如何为匿名函数指定this?

    在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了. 关于闭包匿名函数,在JS中有个很典型的问题就是要 ...

  7. js中的对象、函数定义以及形参和实参

    一.对象属性的两种写法 1.点语法 点语法的属性值不加双引号,运用时不能使用变量 2.中括号的写法 (1)中括号写法obj["key"]=value;必须有双引号,原因是在key这 ...

  8. js中自己实现bind函数的方式

    前言 最近由于工作比较忙,好久都没时间静下心来研究一些东西了.今天在研究 call 和 apply 的区别的时候,看到 github 上面的一篇文章,看完以后,感觉启发很大. 文章链接为 https: ...

  9. 【Python】Python中的lambda匿名函数

    语法格式: lambda params:expr 注意事项: lambda只是一个表达式,函数体比def的简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装 ...

  10. js中构造函数与普通函数的区别

    构造函数不仅只出现在JavaScript中,它同样存在于很多主流的程序语言里,比如c++.Java.PHP等等.与这些主流程序语言一样,构造函数在js中的作业一样,也是用来创建对象时初始化对象,并且总 ...

最新文章

  1. asp.net 域名欺骗式开发
  2. github入门必备概念
  3. StringBuider 在什么条件下使用效率更高?
  4. StarUML 破解方法2.X(转)
  5. controller属于哪一层_别急着换5G,4G手机同样值得考虑!哪几款安卓手机称得上4G机皇?...
  6. 软件测试管理工具禅道开源版下载安装
  7. 【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析
  8. golang笔记(1)-数据库查询结果映射至结构体
  9. 通过jQuery设置全局Ajax加载时呈现Loading
  10. 跳过授权列表--skip-grant-list--案例
  11. 项目管理-产品开发流程
  12. php 去除单引号,php如何去除双引号
  13. 排序算法lowB三人组
  14. Mac无法打开CORE Keygen
  15. Go语言核心之美-必读
  16. DateTimePicker
  17. 通往财富自由之路详细笔记(17)
  18. python输入某年某月输出天数_编写程序计算某年某月的天数.输入年份year和月份month,输出该月份的天数...
  19. Android版本铎A梦幻连连看游戏源代码完整版
  20. 过渡——CSS3动态效果 过渡属性

热门文章

  1. idea svn 的使用----转载,挺好的
  2. day1 Ubuntu 使用
  3. iOS开发中的小Tips
  4. PetShop数据访问层之消息处理(转Bruce Zhang)
  5. 100 计算机网络基础知识
  6. 38.线程交换与线程移动
  7. 1.bootstrapTable data-table
  8. Operation,Tensor, Variable
  9. Microsoft AJAX Library对 String的扩展
  10. 智能客户端(Smart Client )中文文档及案例(转贴)