在javascript中,表达式是短语,那么语句(statement)就是整句或命令。正如英文语句以句号结尾,javascript以分号结尾。
表达式计算出一个值,但语句使某件事发生。
“使某件事发生”的一个方法是计算带有副作用的表达式。诸如赋值和函数调用这些有副作用的表达式,是可以作为单独的语句的。这种把表达式当做语句的用法也称做表达式语句(expression statement)。类似的语句还有声明语句(declaration statement),声明语句用来声明新变量或者定义新函数。
javascript程序就是一系列的可执行语句的集合,默认情况下,javascript解释器依照编写顺序依次执行。另一种“使某件事情”发生的方法就是改变语句的默认执行顺序:
1.条件语句(conditional)语句:javascript解释器可以根据一个表达式的值来判断;来执行还是跳过这些语句,例如if和switch语句。
2.循环语句(loop)语句:可以重复执行的语句,例如while和for语句
3.跳转(jump)语句:可以让解释器跳转至程序的其它部分继续执行、例如break、return和throw语句
接下来本文将介绍javascript中各式各样的语句和其语法。本章最后对这些语句做了总结。一个javascript程序无非是以分隔分割的语句集合,所以一旦掌握了javascript语句,就可以编写javascript程序了。
1.表达式语句
赋值语句是一种比较重要的表达式语句,它的作用就是改变一个变量的值,就像执行一条赋值语句一样:例如
复制代码 代码如下:
greet = "hello" + name;
i *= 3;
递增运算符(++)和递减运算符(--)和赋值语句有关。它们的作用是改变一个变量的值,就像执行一条赋值语句一样。
复制代码 代码如下:
counter++;
delete运算符的重要作用就是删除一个对象的属性(或数组的元素),所有它一般作为语句使用,而不是作为复杂表达式的一部分。
复制代码 代码如下:
delete o.x;
函数调用是表达式语句的另外一个大类,例如
复制代码 代码如下:
alert(greet);
window.close();
虽然这些客户端函数都是表达式,但它们对web浏览器造成了一定的影响。所以我们认为也是语句,调用一个没有副作用的函数是没有意义的,除非它是复杂的表达式或赋值语句的一部分,例如。不可能随便把一个余弦值丢弃;
Math.cos(x);
相反,得出余弦值就得把它赋值给一个变量,以便将来使用这个值:
var cx = Math.cos(x);
再次提醒各位,每行代码就是以分号结束的。
2.复合语句和空语句
可以用逗号运算符将几个表达式连接在一起,形成一个表达式。同样,javascript还可以讲多条语句联合在一起,形成一个复合语句(compound statement)。只需花括号将多条语句括起来即可。因此,下面几行代码可以当成一条单独的语句,使用在javascript任何希望使用一条语句的地方。
复制代码 代码如下:
{
x = Math.PI;
cx = Math.cos(x);
console.log("cos(π)=" + cx);
}
关于语句块有几点需要注意:第一,语句块不需要分号。块中的元素语句必须以分号结尾,但语句块不需要。
第二,语句块中的行都有缩进,这不是必须的,但整齐的缩进能使代码可读性更强,更容易理解。
第三,javascript没有块级作用域,在语句块中声明的变量并不是语句块所私有的。(参考3章10节第一小节)
将很多条语句合并成一个大语句块的做法在javascript编程中非常常见。类似的表达式通常包含子表达式一样,很多javascript包含其它子语句,从形式来讲,javascript通常允许一个语句块包含一条子语句。例如:while循环的循环体就可以只包含一条语句。使用语句块,可以将任意数量的语句放到这个块中,这个语句块可以当做一条语句来使用。