if语句
条件语句用于基于不同的条件来执行不同的动作。
If 语句
只有当指定条件为 true 时,该语句才会执行代码。
语法:
if (条件)
{
只有当条件为 true 时执行的代码
}
If…else 语句
语法:
if (条件)
{
当条件为 true 时执行的代码
}
else
{
当条件不为 true 时执行的代码
}
If…else if…else 语句
语法:
if (条件 1)
{
当条件 1 为 true 时执行的代码
}
else if (条件 2)
{
当条件 2 为 true 时执行的代码
}
else
{
当条件 1 和 条件 2 都不为 true 时执行的代码
}
注意:if语句的条件可以是任何表达式,计算的结果甚至不必是真正的boolean值,ECMAScript会把它转化为boolean值。
循环迭代语句
For 循环
循环可以将代码块执行指定的次数。
语法:
for (语句 1; 语句 2; 语句 3)
{
被执行的代码块
}
语句 1 在循环(代码块)开始前执行,可省略
语句 2 定义运行循环(代码块)的条件,可省略,省略后则为true,循环内部需要提供break
语句 3 在循环(代码块)已被执行之后执行,可省略
For/In 循环
JavaScript for/in 语句循环遍历对象的属性。
例如:
var x;
var txt="";
var person={fname:"Bill",lname:"Gates",age:56};
for (x in person)
{
txt=txt + person[x];
}
alert(txt); //输出"BillGates56"
在使用for…in语句之前,需要保证,对象的属性是可数的。
例如:
var x;
var txt="";
var person={fname:"Bill",lname:"Gates",age:56};
if(!person.propertyIsEnumerable())
{
for (x in person)
{
txt=txt + person[x];
}
}
alert(txt); //输出"BillGates56"
While 循环
While 循环会在指定条件为真时循环执行代码块。
语法:
while (条件)
{
需要执行的代码
}
如果省略了while语句的条件,则一定要在循环体内部增加break语句,不然,会导致浏览器崩溃。
do/while 循环
do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。
语法:
do
{
需要执行的代码
}
while (条件);
与while循环相同,如果省略了while语句的条件,则一定要在循环体内部增加break语句,不然,会导致浏览器崩溃。
另外值得注意的一点是,while条件之后,以分号结束。
标签语句
有标签的语句。
语法:
label : statement
标签语句可以被break和continue语句引用。
break 和 continue 语句
break 语句用于跳出循环。
continue 用于跳过循环中的一个迭代。
Break 语句
break 语句可用于跳出循环。
reak 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)。
例如:
var i;
var x=0;
for (i=0;i<10;i++)
{
if (i==3)
{
break; //i==3时结束循环
}
x++;
}
alert(i); //3
alert(x); //3
与有标签的语句一起使用,返回代码中的特定位置。
例如:
var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
for (var j=0; j<10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
iNum++;
}
}
alert(iNum); //输出 "55"
Continue 语句
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。
例如:
var i;
var x=0;
for (i=0;i<10;i++)
{
if (i==3)
{
continue; //i==3时结束当前循环
}
x++;
}
alert(i); //10
alert(x); //9
与有标签的语句一起使用,返回代码中的特定位置。
例如:
var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
for (var j=0; j<10; j++) {
if (i == 5 && j == 5) {
continue outermost;
}
iNum++;
}
}
alert(iNum); //输出 "95"
需要注意的是:
break 和 continue 语句仅仅是能够跳出代码块的语句。
另外:
continue 语句(带有或不带标签引用)只能用在循环中。
break 语句(不带标签引用),只能用在循环或 switch 中。
with 语句
有标签的语句
with 语句用于设置代码在特定对象中的作用域。
语法:
with (expression) statement
例如:
var sMessage = "hello";
with(sMessage) {
alert(toUpperCase()); //输出 "HELLO"
}
注意:with 语句是运行缓慢的代码块,尤其是在已设置了属性值时。大多数情况下,如果可能,最好避免使用它。
另外:with语句可以延长变量的作用域。
var sMessage = {name : "Bill",word:"hello"};
with(sMessage.word) {
alert(toUpperCase()); //输出 "HELLO"
}
延长作用域,即是sMessage.word变量在with代码块中相当于全局变量。
switch 语句
switch语句是if语句的兄弟语句。
switch 语句
switch 语句用于基于不同的条件来执行不同的动作。
语法:
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。
例如:
var x;
var day=new Date().getDay();
switch (day)
{
case 0:
x="Today it's Sunday";
break;
case 1:
x="Today it's Monday";
break;
case 2:
x="Today it's Tuesday";
break;
case 3:
x="Today it's Wednesday";
break;
case 4:
x="Today it's Thursday";
break;
case 5:
x="Today it's Friday";
break;
case 6:
x="Today it's Saturday";
break;
}
alert(x); //Today it's Sunday
注意的是:Sunday=0, Monday=1, Tuesday=2, 等等。
default 关键词
请使用 default 关键词来规定匹配不存在时做的事情。
例如:
var x;
var day=new Date().getDay();
switch (day)
{
case 6:
x="Today it's Saturday";
break;
case 0:
x="Today it's Sunday";
break;
default:
x="Looking forward to the Weekend";
}
alert(x); //Today it's Saturday
注意:ECMAScript 和 Java 中的 switch 语句有两点不同。在 ECMAScript 中,switch 语句可以用于字符串,而且能用不是常量的值说明情况:
var BLUE = "blue", RED = "red", GREEN = "green";
switch (sColor) {
case BLUE: alert("Blue");
break;
case RED: alert("Red");
break;
case GREEN: alert("Green");
break;
default: alert("Other");
}
注意:switch 语句用于字符串 sColor,声明 case 使用的是变量 BLUE、RED 和 GREEN,这在 ECMAScript 中是完全有效的。
本文章主要参考并总结W3School以及W3Cschool
W3School