相关疑难解决方法(0)

JavaScript库中的前导分号有什么作用?

在几个JavaScript库中,我在一开始就看到了这种符号:

/**
 * Library XYZ
 */
;(function () {
  // ... and so on
Run Code Online (Sandbox Code Playgroud)

虽然我对"立即执行的函数"语法非常满意

(function(){...})()
Run Code Online (Sandbox Code Playgroud)

我想知道领先的分号是什么.我能想到的是,它是一种保险.也就是说,如果库嵌入在其他有缺陷的代码中,那么它就是"最后一个语句在最后结束"的速度缓冲.

它有任何其他功能吗?

javascript syntax

151
推荐指数
5
解决办法
9261
查看次数

您是否建议在JavaScript中的每个语句后使用分号?

在许多情况下,如果您将它们遗漏,JavaScript解析器将为您插入分号.我的问题是,你把它们遗弃了吗?

如果您不熟悉规则,则会在Mozilla网站上对分号插入进行描述.这是关键点:

如果第一至第n JavaScript程序形式的令牌是语法上有效,但第一至第n + 1个ST令牌是不与存在n之间的换行符令牌和第n + 1个ST令牌,则解析器尝试将所述n之间的虚拟分号令牌之后再次解析程序和第n + 1个ST令牌.

这种描述可能不完整,因为它没有解释@ Dreas的例子.任何人都有完整规则的链接,或者看看为什么这个例子得到一个分号?(我在JScript.NET中尝试过.)

此stackoverflow问题是相关的,但仅涉及特定方案.

javascript

52
推荐指数
9
解决办法
17万
查看次数

这个javascript符号是什么?

我在这里找到

;(function ($, window, document, undefined) {
//code
}(jQuery, this, this.document));
Run Code Online (Sandbox Code Playgroud)

这是我第一次看到这样的东西.它是什么以及如何解释?我不明白为什么它必须传递this和this.document,以及'undefined'是什么.

我问的原因是因为我把它包含在我的页面中

  if($('ul.mtree').length)
Run Code Online (Sandbox Code Playgroud)

返回false,尽管它在控制台中输入时返回true.

javascript jquery

16
推荐指数
1
解决办法
515
查看次数

为什么在定义函数之前需要使用分号?

;在一些jQuery插件源代码的函数开头看到了一些奇怪的东西,如下所示:

;(function ($) {.....
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么他们需要;在这种情况下使用?

javascript jquery jquery-plugins

7
推荐指数
2
解决办法
1807
查看次数

标签 统计

javascript ×4

jquery ×2

jquery-plugins ×1

syntax ×1