【问题标题】:Start all javascript scripts with ;? [closed]用 ;? 启动所有 javascript 脚本[关闭]
【发布时间】:2012-11-20 10:45:05
【问题描述】:

以分号开头的所有 JS 文件以说明之前包含的任何不良脚本是一种好习惯吗?还是不打扰?

谢谢

;(function(){ /* my script here */ })();

【问题讨论】:

  • 为什么会不好?显然你已经知道为什么要这样做了。
  • 在我看来,如果你写了很多错误的代码,这才是好的做法。
  • 那么; 将如何保护免受“坏”的影响?
  • @adeneo:这不是重点。这是为了防止出现这样的情况:您将代码与其他代码(可能是外部库)合并到一个文件中,而其他代码不会以 ; 终止。
  • 是的,那将是错误的代码!

标签: javascript


【解决方案1】:

如果您将大量代码拆分并解耦为多个 javascript 文件,然后您在某个时候将这些文件连接起来以创建生产文件,那么前导分号实际上非常有用。

这将有助于避免类似结构中的错误

(function() {
}())

如果你所有的文件都包装在这样的结构中,它会在没有任何分号的情况下填充失败,将它们分开。除此之外,这种模式没有多大价值。

【讨论】:

    【解决方案2】:

    相反,用"use strict"; 开始你的所有脚本,在某些浏览器上它会检查你的脚本是否有一些容易出错的做法,有趣的是我相信它会产生与; 类似的效果,用于关闭任何未完成的语句之前包含的脚本。

    【讨论】:

    • "use strict"; 放在IIFE 之外不是一个好主意,因为它会破坏其他代码。
    • @user1689607 检查这个stackoverflow.com/questions/2343608/… 我相信“使用严格”只会影响定义它的脚本。
    • 是的,但是虽然问题中没有明确说明,但使用前导; 的原因是当您将不同的脚本加入一个文件时,这会将它们放在同一个脚本中.
    • 欢迎加入 20k 俱乐部!
    【解决方案3】:

    麻烦了,越来越多的人利用 ASI 的力量来编写无分号的 JavaScript。在无分号的 JS 世界中,这是“规则”,您在原始表达式之前放置一个分号,例如 ;();[];//,以及在 'use strict'; 之后,并在其他任何地方省略它们。原始表达式不是很常见,除了典型的 IIFE。 即使你用分号编写 JS,那个特定的也是安全的,而且做得比坏处多。

    【讨论】:

    • 我不得不说我不明白为什么讨厌无分号的 JS。根据经验,无论是否使用分号编写 JS,后者都不太容易出错(如果您遵守规则)并且看起来更干净。无论如何,所有代码最终都会被缩小...
    【解决方案4】:

    不是个好主意:

    1. 隐藏错误
    2. 某些内容无法在您的网站上运行,但没有明确说明原因
    3. 没有理由使用错误的脚本。

    【讨论】:

    • 您能澄清一下“隐藏错误”项吗? ; 如何隐藏错误?
    • 真的取决于确切的错误,每个错误,解析器都会以不同的方式报告。这个问题本质上是笼统的,因此是笼统的答案。
    • 这样做会如何导致网站无法正常工作?
    • 问题很具体。前导 ; 用于一个特定的错误。
    【解决方案5】:

    我通常不会打扰,但是,如果您想真正安全,那就去做吧。如果您使用其他人的库,我可能会这样做,但话又说回来,这是您的选择。

    【讨论】:

    • “但是,如果你想真正安全,那就去做吧” --- ; 是灵丹妙药,
    • @zerkms:它违背了它想要保护的东西。
    • 投了反对票,除了“我没有,但如果你愿意,你可以。”之外的信息不多。
    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 2013-02-08
    • 2014-07-02
    • 1970-01-01
    • 2016-06-08
    • 2014-11-07
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多