我正在看一个开源项目,看到这样的事情:
;(function(){
// codes here
})()
Run Code Online (Sandbox Code Playgroud)
我想知道分号是否有特殊含义?
这是因为ASI(自动分号插入)允许您避免使用分号.
例如,您可以编写此类代码而不会出现错误:
var a = 1
a.fn = function() {
console.log(a)
}
Run Code Online (Sandbox Code Playgroud)
看到?没有一个分号.
但是,有些情况下未插入分号.基本上,在实际项目中,有一种情况不是:当下一行以括号开头时.
javascript解析器将下一行作为参数,而不是自动添加分号.
例:
var a = 1
(function() {})()
// The javascript parser will interpret this as "var a = 1(function() {})()", leading to a syntax error
Run Code Online (Sandbox Code Playgroud)
为避免这种情况,有以下几种方法:
使用以下结构:
!function() {}()
归档时间: |
|
查看次数: |
1800 次 |
最近记录: |