原文地址:https://wangdoc.com/javascript/
语句
JavaScript程序的执行单位为行,也就是一行一行地执行。一般情况下,每一行就是一个语句。
var a = 1 + 3;
表达式不需要分号结尾。一旦在表达式后面添加分号,则JavaScript引擎就将表达式视为语句,这样会产生一些没有意义的语句。
1 + 3;
"abc";
上面两行语句只是单纯的产生一个值,没有任何实际的意义。
变量
变量是对值得具名引用。
注意:JavaScript的变量名区分大小写,所以A和a是不同的变量。
如果只声明变量没有赋值,则该变量的值是undefined。undefined是一个特殊的值,表示无意义。
变量赋值的时候,忘了写var关键字,这条语句也是有效的。
var a = 1;
// 基本等同
a = 1;
但是不谢var的做法不利于表达意图,而且容易不知不觉的创建全局变量。
JavaScript是一种动态类型语言,也就是说,变量的类型没有限制,变量可以随时更改类型。
var a = 1;
a = "hello";
如果使用var重新声明一个已经存在的变量,是无效的。
var x = 1;
var x;
x // 1
上面代码中,变量x声明了两次,第二次声明是无效的。
但是,如果第二次声明的时候还进行了赋值,则会覆盖掉前面的值。只要知道声明和赋值是分开的两步操作,就可以很容易理解了。
var x = 1;
var x = 2;
x // 2
// 等同于
var x = 1;
var x;
x = 2;
变量提升
JavaScript引擎的工作方式是,先解析代码,获取所有的被声明的变量。然后再一行一行的运行。这造成的结果就是所有的变量声明语句,都被提升到代码的头部,这就叫做变量提升。
console.log(a);
var a = 1;
因为变量提升,真正运行如下:
var a;
console.log(a);
a = 1;
// 结果显示 <font color=red>undefined</font>
标识符
按照要求命名,最好使用驼峰。
注释
单行注释://
多行注释:/* 和 */
兼容HTML注释方式:
需要注意的是,-->只有在行首才被当成单行注释,否则当成正常的运算符。
function countDown(n) {
while(n --> 0)
console.log(n);
}
countDown(3);
// 2
// 1
// 0
上面代码中,n --> 0实际上被当成n-- > 0,注意先判断在做--,再console.log(),所以输出2,1,0。
区块
JavaScript使用大括号,将多个相关语句组合在一起,称为区块(block)。
对于var关键字来说,JavaScript的区块不构成单独的作用域(scope)。
{
var a = 1;
}
a // 1
上面代码在区块内部,使用var关键字声明并赋值了变量a,然后再区块外部,变量a依然有效,区块对于var命令不构成单独的作用域。在JavaScript语言中,单独使用区块并不常见,区块往往用来构成其他更复杂的语法结构,比如for、if、while、function等。
条件语句
if语句需要注意不要混淆赋值表达式(=)、相等运算符(==)和严格相等运算符(===)。
循环语句
和Java类似
break和continue
和Java类似,且可以使用break + label的方式跳出某个label块。