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

JavaScript015

js文件中函数前加分号和感叹号是什么意思?有什么用,第1张

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

你看到的感叹号一般是在压缩过的js文件里面,因为在匿名函数调用的时候,通常我们都是用:

(function(){})()

的形式,但也可以使用另一种形式:!function(){}() 前面的!号可以换成-+~等等一元操作符,从而省下了1字节。

分号加与不加完全取决于个人习惯,但为了代码稳定(解析出错)还是建议使用分号断句。

JavaScript自动加分号规则:

1.当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号。

2.当有}时,如果缺少分号,会补分号。

3.当程序源代码结束时,如果缺少分号,会补分号。

结论:

1.在return、break、continue、后自增、后自减五种语句中,换行符可以完全替代分号的作用。

2.var if do while for continue break return with switch throw try debugger几种关键字开头的语句,以及空语句,上一行加不加分号影响不大。

3.凡表达式语句和函数表达式语句,后面不加分号非常危险,情况极其复杂。

4.凡(和[开头的语句,前面不加分号极度危险。

通常是用在立即调用之前。但是并不是因为他是立即调用函数,而是为了文件合并的安全。

比如你有两个文件,a.js 和 b.js,里面都是一个立即调用函数:

// a.js

( function() {} )() // b.js

( function() {} )()

如果你在构建过程中把两个文件压缩之后连接到一起,就变成了

( function() {} )()( function() {} )()

这样就出了问题,所以为了避免这个问题,你可以在 b.js 最前面加一个分号。

( function() {} )()( function() {} )()

很多第三方 JS 库需要考虑各种被使用的情况,所以前面可能会写个分号。