学习笔记,主要是记录一些JavaScript需要注意的东西,和一些小的细节。
可选的分号
和其他许多编程语言一样,JavaScript 使用分号(;)将语句分隔开的。这对增强代码的可读性和整洁性非常重要。
缺少分割符,一条语句的结束就成了下一跳语句的开始,反之亦然。
在JavaScript中,如果语句个独自占一行,通常可以省略语句之间的分号(程序结尾或又花括号"}"之前的分号也可以省略)。
许多JavaSritpt程序员使用分号来明确语句的解释,即使在并不完全需要分号的时候也是如此。
我也建议大家这样做。
如下代码,
a=3; b=4; //因为两条语句用两行书写,第一个分号是可以省略掉的
a=3;b=4; //如果在一行,第一个分号则不能省略
需要注意的是,JavaScript并不是所有的换行都要填补分号,只有缺少了分号就无法正确解析代码的时候,JavaScript才会填补分号。
var a a = 3 console.log(a) //JavaScript将其解析为: var a; a=3; console.log(a)
看如下的例子,
var y=x+f (a+b).toString() //第二行的圆括号与第一行的f 组成一个函数调用 //JavaScript 会解析成 var y=x+f(a+b).toString();
而上面的代码本意却不是这样的。分号还是不要省略的好。
通常来讲,如果一条语句以 "("、"[" 、"/" 、"+" 或者 “-” 开始,那么它极有可能和前一条语句在一起解析。
以"/" 、"+" 或者 “-” 开始的语句并不常见,而以 "("、"[" 开始的语句则非常常见,至少在一些JaveScript编码风格中是很普遍的。
有些程序员喜欢保守的在语句前加上一个分号,这样哪怕之前的语句被修改了、分号被误删除了,当前语句还是会正确解析:
var x=0 //这里省略了分号 ;[x,x+1,x+2].forEach(console.log)//前面的分号保证了正确的语句解析
如果当前语句和下一行语句无法合并解析,JavaScript则在第一行后填补分号,这是通用的规则,但有两个例外。
第一个例外是在涉及return、break和continue语句的场景中。如果这三个关键字后紧跟着换行,JavaScript则会在换行处填补分号。
例如:
return ture; //JavaScript会解析成: return ; true; //而代码本意是这样的: return true;
第二个例外是在涉及"++"和"--"运算符的时候。
这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。
如果将其用作后缀表达式,他和表达式应当咋同一行。
否则,行尾将填补分号,同事""++或"--"将会作为下一行代码的前缀操作符并与之以前解析。
例如:
x ++ y //这段代码解析为" x;++y"而不是 "x++;y"
最后还是提醒大家 使用分号来明确语句的解释,即使在并不完全需要分号的时候也是如此。