Home  >  Q&A  >  body text

javascript - 为什么有的jQuery插件以";"分号开头

今天查看某些jQuery插件的代码,发现开头加了";",运行不会出错,而且不像是作者手误。
像下面代码这样的,折是为什么呢?

;(function($) { ... }
PHP中文网PHP中文网2748 days ago674

reply all(8)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 12:45:27

    没有仔细看过jquery的代码,不过这个很好理解:js代码结束的时候,最后一句是允许不加分号的(比如一个函数的最后一句)。如果某个js代码这么做了,那么把它跟另外一个js脚本拼在一起的时候,原来是“最后一句”的,变成了不是最后一句,于是就出现语法错误了。

    另外,仅包含分号的语句,和C语言一样,表示一个空语句,完全是符合语法的,所以也不会有错。

    reply
    0
  • PHPz

    PHPz2017-04-10 12:45:27

    这个是为了多个JS文件合并压缩的时候防止文件之间没有;分隔导致错误,如
    a.js

    var plugin1 = true

    b.js

    (function($){
       //dosomething
    })();

    如果使用合并压缩工具之后会变成

    var plugin1 = true(function($){})();

    这样是会报错的TypeError: true is not a function

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 12:45:27

    为了可以合并压缩JS

    reply
    0
  • PHPz

    PHPz2017-04-10 12:45:27

    在合并压缩的时候分割两句js。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 12:45:27

    简单讲,如果被引用,可以闭合前面语句。

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 12:45:27

    合并压缩js,防止有的插件结尾没有写分号出现语法错误

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 12:45:27

    前面加任何运算符都一样的就想有些人习惯用~有些人习惯用!放在函数前,这是为了个函数降权,至于为什么选择;可能是考虑到压缩也可能是个人习惯,无需追究

    reply
    0
  • 高洛峰

    高洛峰2017-04-10 12:45:27

    不是所有人都加分号的

    reply
    0
  • Cancelreply