Javascript 简单语句和复杂语句的区别

Javascript 简单语句和复杂语句的区别,javascript,Javascript,我正在研究w3schools(标题为“语句规则”),他们说“始终以分号结束简单语句。”和“不要以分号结束复杂语句”。他们没有定义简单语句和复杂语句之间的区别,而彻底的在线搜索也没有提供答案。所以我仍然对JavaScript分号的位置感到困惑。如果有任何帮助,我将不胜感激。复杂语句是{}中的一系列('simple')语句 所以你要写(简单的陈述): 和(复杂语句,在许多语言中称为复合语句,在JavaScript中称为块) 但不是 { a = 3; b = 4; }; 复杂语句指的是i

我正在研究w3schools(标题为“语句规则”),他们说“始终以分号结束简单语句。”和“不要以分号结束复杂语句”。他们没有定义简单语句和复杂语句之间的区别,而彻底的在线搜索也没有提供答案。所以我仍然对JavaScript分号的位置感到困惑。如果有任何帮助,我将不胜感激。

复杂语句是
{}
中的一系列('simple')语句

所以你要写(简单的陈述):

和(复杂语句,在许多语言中称为复合语句,在JavaScript中称为块)

但不是

{
   a = 3;
   b = 4;
};

复杂语句指的是
if
for
while
等中的块

if(condition){

} //no semicolon
简单陈述:

var x = 2;

在某些情况下,JavaScript允许您省略语句末尾的分号。在其他情况下,它必须存在,否则下一行将被视为同一语句的一部分。何时可以安全地省略它的规则有些复杂,而且容易出错


我建议您选中此项

并提供指向您所引用页面的链接。一般来说,您只需在语句末尾加一个分号。有些地方不需要它们,比如在函数定义之后,但即使在函数之后添加一个,也不会破坏任何东西。如果你不知道分号是否属于你,试试看。此外,考虑使用MDN网站来学习JavaScript而不是3WAsStudio。w3s倾向于给出不准确的描述和示例。我不知道是否应该发布一个指向SO文档的链接作为答案,但正如Pamblam所说,有一篇关于w3s的文章,w3s学校是有问题的,有更好的资源。@str谢谢,已编辑。他们指的是一个简单的语句,如
throw“ERROR”
与像
{a=1;b=2;}
这样的复杂语句相比。然而,“复杂陈述”并不是正确的术语;技术术语是JS is block,有时使用复合语句。这是一个学校草率的例子,这就是为什么我们应该避免它。如果你知道谷歌有“Javascript块”,那么你会马上找到大量的信息是一个语法错误。实际上,最好称为块,这是标准术语。“复合语句”在其他编程语言中使用,但在JS规范中找不到它。@JaredSmith不确定您的意思。你指的是箭头函数的简洁体形式吗?“这不是一个语句,而是一个表达式。”torazaburo据此进行了编辑。此外,我认为像“复合语句”这样的通用术语也应该为人所知,因为它使人能够审视自己成长过程中所使用的语言的边界。。。但在JS中,块确实是首选。@torazaburo如果我编写一个丢弃箭头函数(不绑定到赋值表达式中的名称),使用大括号来分隔函数体,而忽略分号,那么我会得到一个语法错误。或者这仍然是一个表达式吗?将arrow函数包装在parens中以强制计算为表达式不会产生相同的错误:
(()=>{})[0]
vs
()=>{}[0]
。复杂语句(这是一个错误且容易混淆的术语,在JS中没有使用)不一定是任何东西。它可以独自坐在那里。
if(condition){

} //no semicolon
var x = 2;