JS中的Semi-Colon问题

Semi Colon Issue in JS

本文关键字:问题 Semi-Colon 中的 JS      更新时间:2023-09-26

我碰巧遇到了以下奇怪的情况:

其中一个网络呼叫返回如下响应:

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

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

意外标识符

当在函数1定义后添加semi-colon时,此问题得到了解决。因此,正确的解决方案是:

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

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

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引擎可以计算出这是两个不同的语句。

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

这里有两个语句在同一行,所以第一个分号是必须的。

但你可以写这样的东西:

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

(不带最后一个分号)

更多详细信息请点击此处:https://www.codecademy.com/forum_questions/507f6dd09266b70200000d7e

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

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