看到下图这样的代码,不明白地方有三个:
第一个function前为什么要用感叹号?意思是把第一个函数的返回值强制转为布尔值吗?可以又没有赋值操作,转换成布尔值应该没有意义吧?
第二个函数和后面的函数都用~,这是同位取反?也是没有赋值,这样用是为什么?
每个匿名函数之间用逗号隔开,这是为什么?一般也是赋值的时候才用到逗号分隔吧?

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为声明式定义函数立即执行,解析器是无法理解的,要把声明式转化为函数表达式才能让解析器解析成功,常用的是添加(),其实添加
!+-~也是可以的:逗号就是连续执行多个匿名函数
首先,问题的关键在于理解三个操作符,分别是:
一元运算符中的逻辑非运算符(!)和按位非运算符(~)
圆括号操作符
逗号操作符
在本例中,首先声明函数的一般形式为:
而如果省略掉这个
[name],就变成了匿名函数。但是匿名函数单独写的话就会报错:为了让它成为合法的表达式,这时就需要一元运算符了:
这时这个表达式就合法了。但是这时它还只是一个静态的表达式,而我们的目的是直接运行内容求值,所以就需要圆括号操作符,变成
~function(){}()这种形式。而如果需要很多个批量写呢,再加上逗号操作符,变成:这样就是题中的形式了。
和用括号括起来的作用一样。
直接写一个匿名函数是会报错的,必须要将它转成可识别的函数体再运行。
你甚至可以这样:
只要让它能够在一个作用域上就可以了
至于逗号,这是通用语法,for循环里面不是总能看见的么
楼上的说的都挺好,我个人认为: 这就是IIFE的一种形式。
楼主可以查看一下相关知识。