【问题标题】:Semi Colon Issue in JS [duplicate]JS中的半冒号问题[重复]
【发布时间】:2015-12-16 04:41:52
【问题描述】:

我碰巧遇到了以下怪事:

其中一个网络调用返回如下响应:

window.function1 = function() {
  console.log('function 1');
} window.project = 'test';

但是当下面的脚本被评估时,它会返回一个错误

意外的标识符

当在 function1 定义后添加 semi-colon 时,此问题得到修复所以正确的修复是:

window.function1 = function() {
  console.log('function 1');
}; window.project = 'test';

我很想知道这背后的原因。

【问题讨论】:

  • function1 右大括号后面的分号表示它是一个匿名函数。它是用于编写匿名函数的 jQuery 语法。
  • 只是你试图在一行中写两条指令。如果你把window.project = 'test';放在新行中,我们不需要;在花括号后,但我更喜欢分号和单每行指令:)

标签: javascript minify


【解决方案1】:
window.function1 = function() {
  console.log('function 1');
} window.project = 'test';

js 引擎将整个事情作为一个语句读取,因为它找不到任何用于匿名函数分配的分号,它继续解析只找到window.project = 'test,所以它给你一个错误。

window.function1 = function() {
  console.log('function 1');
}; window.project = 'test';

这里因为匿名函数后面有一个分号,js引擎可以判断出这是2个不同的语句。

【讨论】:

    【解决方案2】:

    在 Javascript 中,如果语句后跟换行符,分号可以省略。

    这里有两条语句在同一行,所以第一个分号是强制性的。

    但你可以这样写:

    window.function1 = function() {
      console.log('function 1');
    }; window.project = 'test'
    

    (没有最后一个分号)

    更多详情:https://www.codecademy.com/forum_questions/507f6dd09266b70200000d7e

    【讨论】:

      【解决方案3】:

      function1 是一个变量,在window.project 之前似乎没有结论; js 将两个变量解释为 function1。可以在function1 声明后添加逗号, 运算符以避免function1project 两个变量之间的语法错误

      window.function1 = function() {
        console.log('function 1');
      }, window.project = 'test';

      【讨论】:

        猜你喜欢
        • 2017-02-28
        • 2015-11-18
        • 2014-07-08
        • 2019-12-23
        • 1970-01-01
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多