javascript - 函数前的分号是什么意思?

标签 javascript

<分区>

我正在查看一个开源项目,并看到类似这样的内容:

;(function(){
    // codes here
})()

我想知道那里的分号是否有特殊含义?

最佳答案

这是因为 ASI(自动分号插入)允许您避免使用分号。

例如,你可以写出这样的代码而不会出错:

var a = 1
a.fn = function() {
    console.log(a)
}

看到了吗?没有一个分号。

但是,也有不插入分号的情况。基本上,在实际项目中,有一种情况不是:当下一行以括号开头时。

javascript 解析器会将下一行作为参数,不会自动添加分号。

例子:

var a = 1
(function() {})()
// The javascript parser will interpret this as "var a = 1(function() {})()", leading to a syntax error

为了避免这种情况,有几种方法:

  • 在以括号开头的行的开头添加分号(这是在您显示的代码中完成的)
  • 使用以下结构:

    !function() {}()

关于javascript - 函数前的分号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10044695/

相关文章:

javascript - 创建一个绑定(bind)到 AngularJS 中其他输入的计算值数组

javascript - 如何在Jquery中向元素添加类,然后根据该类触发事件

javascript - 存储 JQuery 选择器

Javascript 使用 URL 中的参数

javascript - 如何为文本提供 readmore?

javascript - plupload - 发送另一个带有上传文件的请求参数

javascript - 引号和双引号的条件正则表达式

javascript - Firefox/Chrome Web 扩展 - 尝试通过内容脚本注入(inject) IFrame 时出现安全错误

javascript - 为动态生成的图像添加值,然后在单击时显示

javascript - 更新谷歌地图缩放矩形