;(function (factory)
前面这个;什么意思?
看上去是个 IIFE(立即执行函数)。
分号就是语句结束,好跟前面的代码隔离,防止出现某些错误。
// 没分号,下面代码会报错
var a = 12
var b = a
(function () { var e = 14; }())
// 有分号,下面代码正确执行
var a = 12
var b = a
;(function () { var e = 14; }())
仔细看一下, function
前面是有个圆括号的。在 JS
中,圆括号除了用来提升表达式的优先级,还可以用来 包裹函数的参数列表 ,在声明函数的时候如此,在执行的时候也是如此。
而 JS
语法允许表达式末尾不写分号 ;
,如果上面一行的人没写分号,而下面一行又以圆括号开头的话,引擎就会认为圆括号里是上面一个表达式返回的函数的参数列表,会把他们拼在一起尝试执行,得到意外的结果,或者发生错误。
为了避免写上面一行代码的人忘了写或不喜欢写分号,以圆括号开头的代码行一定要自带一个分号,当然,自己也要养成分号结尾的好习惯。
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
防止上一行结束没有
;
造成编译错误,例如;
,保证不会受别人的代码影响