JS 中的分号问题
Semi Colon Issue in JS
我碰巧遇到了以下奇怪的案例:
其中一个网络调用返回了如下响应:
window.function1 = function() {
console.log('function 1');
} window.project = 'test';
但是当下面的脚本被评估时,它返回了一个错误
Unexpected Identifier
当在 function1 定义后添加 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引擎可以判断这是2个不同的语句。
function1
是一个变量,在window.project
之前似乎没有结束; js
将两个变量解释为 function1
。可以在 function1
声明后添加逗号 ,
运算符,以避免两个变量 function1
、project
之间出现语法错误
window.function1 = function() {
console.log('function 1');
}, window.project = 'test';
在 Javascript 中,如果语句后跟换行符,则可以省略分号。
同一行中有 2 个语句,因此第一个分号是必需的。
但你可以这样写:
window.function1 = function() {
console.log('function 1');
}; window.project = 'test'
(没有最后一个分号)
此处有更多详细信息:https://www.codecademy.com/forum_questions/507f6dd09266b70200000d7e
我碰巧遇到了以下奇怪的案例:
其中一个网络调用返回了如下响应:
window.function1 = function() {
console.log('function 1');
} window.project = 'test';
但是当下面的脚本被评估时,它返回了一个错误
Unexpected Identifier
当在 function1 定义后添加 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引擎可以判断这是2个不同的语句。
function1
是一个变量,在window.project
之前似乎没有结束; js
将两个变量解释为 function1
。可以在 function1
声明后添加逗号 ,
运算符,以避免两个变量 function1
、project
window.function1 = function() {
console.log('function 1');
}, window.project = 'test';
在 Javascript 中,如果语句后跟换行符,则可以省略分号。
同一行中有 2 个语句,因此第一个分号是必需的。
但你可以这样写:
window.function1 = function() {
console.log('function 1');
}; window.project = 'test'
(没有最后一个分号)
此处有更多详细信息:https://www.codecademy.com/forum_questions/507f6dd09266b70200000d7e