不是所有语句都需要javascript解释器去解释并执行。有时需要在脚本中写一些仅供自己参考或提醒自己的信息,并希望javascript解释器能直接忽略掉这些信息,这类信息就是注释
注释能有效帮助了解代码流程,在代码中它们扮演生活中便条的角色,可以帮助我们弄清楚脚本到底干了什么
[注意]注释一定要精确地描述代码,没有用的注释比没有注释还要糟糕
有多种方式可以在javascript脚本中插入注释,包括单行注释、多行注释和HTML风格的注释
【1】单行注释以两个斜杠开头
//单行注释
【2】多行注释又叫块级注释,以一个斜杠和一个星号/*开头,以一个星号和一个斜杠*/结尾
/*
这是一个多行注释
*/
[注意]块级注释/**/中的那些字符也可能出现在正则表达式字面量里,所以块级注释对于被注释的代码块来说是不安全的
/*
var rm_a = /a*/.match(s);
*/
【3】HTML风格的注释仅仅适用于单行注释,其实javascript解释器对<!--的处理和对//的处理是一样的
<!-- 这是javascript中的注释
如果在HTML文档中,还需要以-->来结束注释
<!-- 这是HTML中的注释 -->
但javascript不要求这么做,它会把-->视为注释内容的一部分
[注意]HTML允许上面这样的注释跨越多行,但这种注释的每行都必须在开头加上"<!--"来作为标志
<!-- 我是注释1
<!-- 我是注释2
<!-- 我是注释3
因为javascript解释器在处理这种风格的注释时与HTML做法不同,为避免发生混淆,最好不要在Javascript脚本中使用
HTML风格的注释
空白(WhiteSpace)
空白通常没有意义,有时候必须要用它来分隔字符序列,否则它们就会被合并成一个符号
var that = this;
var和that之间的空白是不能移除的,但其他的空白可以移除
javascript会忽略程序中标识(token)之间的空格。多数情况下,javascript同样会忽略换行符。由于可以在代码中随意使用空格和换行,因此可以采用整齐、一致的缩进来形成统一的编码风格,从而提高代码的可读性
//通过增加空白字符,提高代码可读性 for(var i = 1; i < 10; i++){ // }
javascript将如下这些识别为空白字符WhiteSpace
\u0009 水平制表符 <TAB>
\u000B 垂直制表符 <VT>
\u000C 换页符 <FF>
\u0020 空格符 <SP>
\u00A0 非中断空格符 <NBSP>
\uFEFF 字符序标记
javascript将如下字符识别为行终止符LineTerminator
\u000A 换行符 <LF>
\u000D 回车符 <CR>
\u2028 行分隔符 <LS>
\u2029 段落分割符 <PS>
可选的分号
javascript使用分号;将语句分隔开,这对增强代码的可读性和整洁性是非常重要的。但javascript并不是在所有换行处都填补分号,只有在缺少了分号就无法正确解析代码时,javascript才会填补分号
var a
a
=
3
console.log(a)
javascript将其解析为:
var a;
a = 3;
console.log(a);
这种语句的分隔规则会导致一些意想不到的情形
var y = x + f
(a+b).toString
javascript将其解析为:
var y = x + f(a+b).toString
因此,为了能让上述代码解析成两条不同的语句,必须手动填写行尾的显式分号
两个例外
如果当前语句和下一行语句无法合并解析,javascript会在第一行后填补分号,这是通用规则,但有两个例外
【1】第一个例外是涉及return、break、continue、throw语句的场景中。如果这四个关键字后紧跟着换行,javascript会在换行处填补分号
return
true;
javascript将其解析为:
return;true;
而代码的本意是:
return true;
【2】第二个例外是在涉及++和--运算符时,如果将其用作后缀表达式,它和表达式应该同一行。否则,行尾将填补分号,同时++或--将作为下一行代码的前缀操作符并与之一起解析
x
++
y
javascript将其解析为:
x;++y;
而代码的本意是:
x++;y;