js文件中函数前加分号和感叹号是什么意思?

江天83      2022-02-08     654

关键词:

本文转自:http://blog.csdn.net/h_o_w_e/article/details/51388500

!function(){}();   !有什么用?

 

从语法上来开,JavaScript中分号表示语句结束,在开头加上,可能是为了压缩的时候和别的方法分割一下,表示一个新的语句开始。所以,如果在一个单独的JS文件中,开头的分号是没有任何意义的,可以删掉。

叹号是逻辑运算符,是“非”的意思,常见这种写法 if(!true){};而将运算符加载函数定义的前面,则是将函数看做一个整体,然后再调用这个函数,并对返回的结构进行逻辑运算。

说白了,此处就是构建了一个立即执行函数,建议楼主知道意思就可以,自己写的时候,可以使用更清晰的格式:

(function(){})();

 

楼上已经给出很详细的解说了。

这里补充一点:在函数声明【 function (){} 】后面加【 () 】,意思是执行这个函数声明。有的叫法是“匿名自动执行函数”,更准确的表示应该为“立即执行函数”。

 

但立即执行函数,要作为表达式的一部分才行,不然js解释器会报语法错误。一般,成为表达式的最容易理解方式是:在左右两端加一个圆括号,像这样【 (function (){}) 】。所以,立即执行函数最常见的写法是【 (function (){})() 】,这是一个语句,在前面和后面都可以加【 ; 】。

 

其实立即执行函数还有N种写法,比如【 (function (){}) 】也行,在函数声明前加一元运算符也行:【 !function (){}() 】、【 ~function (){}() 】。甚至,对一元运算符进行组合也可以:【 !!!!function (){}() 】、【 ~~~function (){}() 】、【 !~!function (){}() 】。


分号是为了和前面的代码隔开,js可以用换行分隔代码,但是合并压缩多个js文件之后,换行符一般会被删掉,所以连在一起可能会出错,加上分号就保险了。


你看到的感叹号一般是在压缩过的js文件里面,因为在匿名函数调用的时候,通常我们都是用: (function(){})() 的形式,但也可以使用另一种形式:!function(){}() 前面的!号可以换成-+~等等一元操作符,从而省下了1字节。



javascript中的感叹号和函数function

js函数前加分号和感叹号是什么意思?有什么用?:http://www.cnblogs.com/mq0036/p/4605255.htmlfunction与感叹号:https://swordair.com/function-and-exclamation-mark/javascript中的感叹号"!": http://www.cnblogs.com/pelli/p/5889813.html 查看详情

PHP中函数前的感叹号是啥意思

】PHP中函数前的感叹号是啥意思【英文标题】:WhatdoesanexclamationmarkbeforeafunctionreallymeaninPHPPHP中函数前的感叹号是什么意思【发布时间】:2012-04-2014:47:55【问题描述】:就像标题一样,PHP中函数前的感叹号是什么意思?比如下面... 查看详情

函数名后面的感叹号是啥意思?

】函数名后面的感叹号是啥意思?【英文标题】:Whatdoesanexclamationmarkmeanafterthenameofafunction?函数名后面的感叹号是什么意思?【发布时间】:2018-01-0521:25:01【问题描述】:我看到了这样的函数functionoperator!(c::Matrix,out::Matrix)......end... 查看详情

js判断中出现两个!!是什么意思?

...false自然你要高兴的话,可以写!!!,或则是三个以上的感叹号。在我眼中这种写法就是哗众取宠,毫无意义。 查看详情

函数调用前的感叹号是啥意思?

】函数调用前的感叹号是啥意思?【英文标题】:Whatdoestheexclamationmarkmeanbeforeafunctioncall?函数调用前的感叹号是什么意思?【发布时间】:2020-11-2421:53:04【问题描述】:我在关注Flutter的PR时遇到了这段代码:if(chunkCallback!=null)chunk... 查看详情

html中的大括号和百分号是啥意思?

...述】:我正在学习如何在Django框架中开发网站。模板html文件有一些我不明白的地方。我看到教程使用花括号(<%if...%><%endif%&g 查看详情

Eclipse中的红色感叹号图标是啥意思?

】Eclipse中的红色感叹号图标是啥意思?【英文标题】:WhatdoestheredexclamationpointiconinEclipsemean?Eclipse中的红色感叹号图标是什么意思?【发布时间】:2011-08-0404:36:45【问题描述】:Eclipse中的红色感叹号图标是什么意思?互联网上有... 查看详情

html中,路径前加“/”与不加“/”有区别,请问是为啥?

...</script>这两个路径前面的是正确的,后面这个找不到文件,请问是什么?谢谢!区别就是选择的路径不同。因为加“/”的意思是根目录下的绝对路径,不加“/”的意思是当前目录下的相对路径。HTML字符可以用一些代码来表... 查看详情

java的方法参数中的双感叹号和#号是啥意思?

...个方法用:Stringresult=exeRule(!!,mapListResult,#,listStep,false);双感叹号和#到底是什么意思?求不吝赐教、、(财富只有4了、、抱歉没法悬赏、)参考技术A没有这样的语法。 参考技术B没见过,同求大神赐教~ 查看详情

mfc中messagebox函数字符串前加l啥意思??

比如:MessageBox(L"qwerty",L"fgsfhjs")加这些L是什么意思??vc++在最近的几个版本 例如 vs2003 2005,2008等等 MFC 默认的 字符集unicode 见图项目属性图所以用L 把字符串转换成unicode字符串,如... 查看详情

在 ruby​​ on rails 中,感叹号后面是啥意思? [复制]

】在ruby​​onrails中,感叹号后面是啥意思?[复制]【英文标题】:whatdoesanexclamationmarkfollowwithvariablemeaninrubyonrails?[duplicate]在ruby​​onrails中,感叹号后面是什么意思?[复制]【发布时间】:2011-09-0918:33:02【问题描述】:可能重复... 查看详情

js中(function(){xxx})();这种写法是什么意思?

自执行匿名函数:常见格式:(function(){/*code*/})();解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。作用:可以用它创建命名空间,只要... 查看详情

js中(function(){xxx})();这种写法是什么意思?

自执行匿名函数:常见格式:(function(){/*code*/})();解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。作用:可以用它创建命名空间,只要... 查看详情

svn中有的代码被标注黄色,绿色和红色,分别表示啥意思呢?

...:标识删除。绿色:标识成功归并。亮红:标识冲。红色感叹号代表修改,黄色感叹号代表冲突,灰色对号代表只读文件夹,红色差号代表删除,黄色锁代表被锁定,蓝色加号代表新增,灰色减号代表被忽略,问号代表未修改。... 查看详情

svn中有的代码被标注黄色,绿色和红色,分别表示啥意思呢?

...:标识删除。绿色:标识成功归并。亮红:标识冲。红色感叹号代表修改,黄色感叹号代表冲突,灰色对号代表只读文件夹,红色差号代表删除,黄色锁代表被锁定,蓝色加号代表新增,灰色减号代表被忽略,问号代表未修改。... 查看详情

delphi中函数的声明和调用是啥意思?

...一下,最好能帮我举个小例子,谢谢。都可以的就纯单元文件而言(不是窗体的pas)举例unitGlobal;interfaceusesWindows,Forms,Dialogs,SysUtils,DB,ADODB;FunctionConnection:Integer;//申明一个连接数据库函数varAppConfig:TIniFile;//配置文件读0写对象implemen... 查看详情

在寄存器前加星是啥意思?

...描述】:我正在研究c++如何通过汇编语言调用正确的成员函数。我自带的简单程序如下:classApublic:virtualvoidshow();classB:publicApublic:voidshow();intmain() 查看详情

自执行函数前面的分号(;)

在看有些源码时,很多人写脚本都在自执行函数前加个分号,例如:;(function(){//具体功能代码。。。})();主要是应对代码合并压缩时,由于缺少分号;带来的错误。(function(){alert("1")})();(function(){alert("2")})()正确(function(){alert("1")})()... 查看详情