If 语句
if 语句是基本的控制语句,它使得JavaScript进行选择,更准确的说,就是有条件地执行语句。这个语句有两种形式,第一种形式是:
if (expression){
statement
}
在这种形式中,expression是要被计算的,如果计算的结果是true,或者可以被转换成true,那么就执行statement。如果expression的值为false,或者可以被转换成false,那么就不执行statement。
另一种形式是:
if (expression){
statement1
}
else{
statement2
}
在这种形式中,先计算expression的值,如果踏实true,就执行stement1,否则就执行statement2。
JavaScript中的规则是,else从句是离它最近的if语句的一部分。要使代码更易读、易理解、易支持和调试,建议使用花括号和合理的缩进!
do-while语句
do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。换句话说,在对条件表达式求值之前,循环体内的代码至少执行一次。
do {
statement
} while (expression);
像do-while这种后测试循环语句最常用于循环体中的代码至少要被执行一次的情形。
while 语句
while语句术语前测试循环语句,也就是说,在循环体内的代码被执行之前,就会对出口条件求值。因此,循环体内的代码有可能永远不会被执行。
while (expression) {statement}
for 语句
for 语句也是一种测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码能力。
for (intialization; expression; post-loop-expression) {statement}
一个实例:
for (var i = 0; i < 10; i++) {
alert(i);
}
以上代码定义了变量i的初始值为0。只有当表达式(i<10)返回true的情况下才会进入for循环,因此也有可能不会执行循环体中的代码。如果执行了循环体中的代码,则一定会对循环后的表达式(i++)求值,即递增i的值。
使用while循环做不到的,使用for循环同样也做不到。也就是说,for循环只是把与循环有关的代码集中在了一个位置。
for-in 语句
for-in语句是一种精准的迭代语句,可以用来枚举对象的属性。
for (property in expression) {statement}
代码示例1:遍历数组
var x
var mycars = new Array()
mycars[0] = "宝马"
mycars[1] = "奔驰"
mycars[2] = "宾利"
for (x in mycars)
{
document.write(mycars[x] + "<br />")
}
代码示例2:遍历对象
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
ECMAScript对象的属性没有顺序。因此,通过for-in循环输出的属性名的顺序是不可预测的。具体来讲,所有属性都会被返回一次,但返回的先后次序可能会因为浏览器而异。
break 和 continue 语句
break和continue语句用于在循环中精确地控制代码的执行。其中,break语句会立即退出循环,强制继续执行循环后面的语句。而continue语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。
代码示例1:
var num = 0;
for (var i = 1; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
alert(num); //4
代码1分析:这个例子中的for循环将变量i由1递增至10.在循环体内,有一个if语句检查i的值是否可以被5整除(使用求模操作符)。如果是,则执行break语句退出循环。另一方面,变量num从0开始,用于记录循环执行的次数。在执行brak语句之后,要执行的下一行代码是alert()函数,结果显示4。也就是说,在变量i等于5时,循环总共执行了4次;而brak语句的执行,导致了循环在num再次递增之前就退出了。
代码示例2:
var num = 0;
for (var i = 1; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++
}
alert(num) //8
代码2分析:例子的结果显示8,也就是循环总共执行了8次。当变量i=5时,循环会在num再次递增之前退出,但接下来执行的是下一次循环,即i的值等于6的循环。于是,循环有继续执行,直到i等于10时自然结束。而num的最终值之所以是8,是因为continue语句导致它少递增了一次。
代码示例3:
var num = 0;
outermost: for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
num++;
}
}
alert(num); //55
代码3分析:在这个例子中,outermost标签表示外部的for语句。如果每个循环正常执行10次,则num++语句就会正常执行100次。换句话说,如果两个循环都自然结束,num的值应该是100,但内部循环中的break语句带了一个参数:要返回的标签。添加这个标签的结果就导致break语句不仅会退出内部的for语句(即使变量j的循环),而且也会退出外部的for语句(即使用变量i的循环)。为此,当变量i和j都等于5时,num的值正好是55。
代码示例4:
var num = 0;
outermost: for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
continue outermost;
}
num++;
}
}
alert(num); //95
代码4分析:在这种情况下,continue语句会强制继续执行循环——退出内部循环,执行外部循环,当j是5时,continue语句执行,而这也就是意味着内部循环少执行了5次,因此num的结果是95。
with语句
with语句的作用是将代码的作用域设置到一个特定的对象中。with语句的语法如下:
with (expression) {statement}
定义with语句的目的主要是为了简化多次编写同一个对象的工作,如下面的例子所示:
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
上面的几行代码都包含location对象。如果使用with语句,可以把上面的代码改写成如下所示:
with(location) {
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
由于大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句。
switch 语句
switch语句与if语句的关系最为密切,而且也是在其它语言中普遍使用的一种流程控制语句。
switch (expression) {
case value:
statement
break;
case value:
statement
break;
case value:
statement
break;
case value:
statement
break;
default:
statement
}
switch语句中的每一种情形(case)的含义是”如果表达式等于这个值(value),则执行后面的语句(statement)“.而break关键字会导致代码执行流跳出switch语句。如果省略了break关键字,就会导致执行完当前case后,继续执行下一个case。最后的default关键字则用于在表达式不匹配前面任何一种情形的时候,执行机动代码(因此,也相当于一个else语句)。
switch语句特点:首先,可以在switch语句中使用任何数据类型(在很多其它语言中只能使用数值),无论是字符串,还是对象都没有问题。其次,每个case的值不一定是常量,甚至是表达式。
如果觉得此篇文章对您有帮助,希望可以请我喝雪碧!