一些坑

113 阅读1分钟

自动插分号,引起含有自执行函数的文件合并后执行不了

JS中会自动清除句子和句子之间的空格以及tab缩进, 这样就可以允许用户编写的代码更加随性和更加可读, 在该行代码解析的时候如果该行代码可以解析, 就会在该行代码最后自动填写分号,如果该行代码无法解析就会把该行代码和下一句代码合并, 直到代码可以解析;

  Js中如果一个语句以 ** (  [ / + -**  开头,就有可能与上一句合在一起解析

//文件1:
(function test1(){
console.log("test1");
})()

//文件2:
(function test2(){
console.log("test2");
})()
复制代码

两个文件单独执行都没问题,但是用gulp打包合并在一起应会报错了,天啊,谁能想到呢,

 Uncaught TypeError: (intermediate value)(...) is not a function
复制代码

我在第一次遇到的时候真的是很抓狂,查了一整天,明明代码都没有错啊。尤其是打包还会压缩代码,根本看不出是哪里的问题,一开始都以为是编译器压缩代码出问题了,方向都搞错了,没想到浓眉大眼的家伙也会叛变革命了。

原因是js自动插分号,所以记得写分号是个好习惯。有些同学喜欢在文件头加个分号,不要觉得奇葩,就是为了避免这个问题。