新行在Javascript中是分隔符吗
在调试一个WebSPA问题时,我无意中发现了一些我在网上找不到的具体引用:javascript中函数表达式之间缺少逗号分隔符。详情如下: 这是有效的-有明确的逗号作为分隔符(注意-有意在一行):新行在Javascript中是分隔符吗,javascript,google-chrome,knockout.js,google-chrome-devtools,knockout-2.0,Javascript,Google Chrome,Knockout.js,Google Chrome Devtools,Knockout 2.0,在调试一个WebSPA问题时,我无意中发现了一些我在网上找不到的具体引用:javascript中函数表达式之间缺少逗号分隔符。详情如下: 这是有效的-有明确的逗号作为分隔符(注意-有意在一行): var f1=function(){console.log(1);},f2=function(){console.log(2);} 然而,这似乎不起作用,在Chrome控制台中尝试它(再次-故意使用一个衬里): var f5=function(){console.log(5);}f6=function(
var f1=function(){console.log(1);},f2=function(){console.log(2);}
然而,这似乎不起作用,在Chrome控制台中尝试它(再次-故意使用一个衬里):
var f5=function(){console.log(5);}f6=function(){console.log(6);}
VM37860:2未捕获的语法错误:意外标识符
在Object.InjectedScript.\u evaluateOn(:895:140)
在Object.InjectedScript.\u evaluateAndWrap(:828:34)
在Object.InjectedScript.evaluate(:694:21)
那么这一个似乎有效-请注意缺少逗号:
> var f3 = function() {
console.log(3);
}
f4 = function() {
console.log(4);
}
< function f4()
> f4()
4
< undefined
> f3()
3
< undefined
>var f3=function(){
控制台日志(3);
}
f4=函数(){
控制台日志(4);
}
<函数f4()
>f4()
4.
<未定义
>f3()
3.
<未定义
我正在寻找解释或参考一个关于为什么多行,但缺少逗号似乎工作
由此产生的后果是,源代码中丢失的逗号滑入了构建中,导致了语法正确的脚本包中的意外行为(包含丢失的逗号片段的脚本片段与服务器端的许多其他组件捆绑在一起,并作为单个脚本标记发送到浏览器)。也就是说,Chrome和FF没有报告语法错误,但脚本行为不正确(这是一个基于knockout.js的复杂SPA,但似乎调用了许多同名但作用域不同的函数中的错误函数;使用的knockout版本是2.x)
不管怎样-我感兴趣的是,是否有人可以从纯Javascript/Chrome控制台的角度解释控制台行为,这超出了基于敲除的SPA的范围。Javascript将在某些换行符处使用分号。啊。因此,您的第二个变量是全局变量,而不是
var
的一部分 如果不使用逗号,它在同一行表示“一个句子”。在另一行中,Javascript将采用另一个句子。逗号可以用来表示“很多变量”
例如,var f1,f2
-->var f1;f2变种代码>
var f3=10
f4=20//它是全局变量。这不是同一行。`为什么!哎呀!whyyyyyyyyy!:-)
> var f3 = function() {
console.log(3);
}
f4 = function() {
console.log(4);
}
< function f4()
> f4()
4
< undefined
> f3()
3
< undefined