在JS中语句一共有3大类型.
第一类:顺序语句(从头到尾顺序执行)
第二类:分支语句(判断)
第三类:循环语句(循环执行)
顺序语句结构
没什么好讲的。就是从上到下按部就班的执行.
分支语句
If语句
在分支语句里面最常用的就是if(){}else{}
小括号里面要是真,就执行第一个{}里面的语句,要是假就执行第二个{}里面的语句
例如:
if(i>25)
{window.alert("You are right")}
else if(i<0)
{window.alert("You are wrong")}
else if(i>30)
{window.alert("You kidding me")}
do-while(用的太少了)
do-while语句在对条件表达式求值以前,循环体内的代码至少会被执行一次。
语法:
do{
window.alert("Hello world!")
}while(条件)
下面是一个示例;
var i = 0 ;
do{
i+=2;
}while(i<10)
alert(i)
在这个例子中,只要变量i的值小于 10,循环就会一直继续下去.而且变量i的值最初为0,每次循环都会递增2
while语句
while语句属于前测试循环语句。也就是说在循环体内的代码被执行前,就会对出口条件求值。因此可能代码永远不会被执行。下面是while的语法;
while(条件){代码}
实例:
var i = 0 ;
while(i<10)
{
i+=2;
}
window.alert(i);
在这个例子中变量开始是0然后每次循环都会递增加2,而只要I的值小于10,循环就会一直下去
for语句
for语句具有在执行循环之前初始化变量和定义循环后要执行的代码的能力
语法;
for(var i=0;i<count;i++)
{
window.alert(i);
}
上面代码定义了变量i的初始值0,只有当表达式(i<count)返回true的情况下才会进入for循环.因此也有可能不会执行循环体中的代码。如果执行了循环体中的代码。则一定会对循环后的表达式(i++)求值,即递增i的值.这个for循环语句与下面的while语句功能相同:
var count = 10;
var i = 0;
while(i<count)
{
alert(i);
i++;
}
简单来说:使用while循环做不到的,for循环也做不到.也就是说for循环只是把循环有关的代码集中在一起了
特别注意:在JS中不存在块级作用域,FOR循环根本不行。
例如:
var count = 10;
for(var i=0;i<count;i++)
{
alert(i);
}
alert(i); //照样能访问到
在上面这个例子中,即使i是循环内部定义的一个变量,但在循环外部也能访问到
此外:for语句中的初始化表达式,控制表达式,循环后的表达式都是可选的。如果将两个表达式全部省略,会创建一个无限循环。
例如:
for(;;) //无限循环
{
doSomething();
}
由于FOR语句存在极大的灵活性,因此它是JS里面最常用的一个语句
for-in语句
for-in属性用来枚举对象的属性。
for(var propName in window)
{
document.write(propName)
}
这个过程会一直持续到对象中的所有属性都被枚举一遍为止。因为JS对象的属性没有顺序,因此通过for-in循环输出的属性没有顺序,具体来说,所有的属性都会被返回一次。但是返回的先后次序可能因浏览器而异。
但是要是对象的变量值要是null或者undefined,for-in语句会报错误,建议在使用for-in循环以前,先检测该对象的值是不是null或undefined
label语句
使用label语句可以在代码中添加标签。方便以后使用。
语法:
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint;
}
num++;
}
}
alert(num); // 循环在 i 为5,j 为5的时候跳出双循环,返回到outPoint层继续执行,输出 55
break和continue语句
break和continue语句,break语句会立即退出循环,强制继续执行循环后面的语句,而continue语句虽然也是立即退出循环,但是退出循环后会从循环的顶部继续开始执行.
var num = 0 ;
for(var i=1;i<10;i++)
{
if(i%5==0)
{
break;
}
num++;
}
alert(num); // 4
break中断后后面就不执行了
var num = 0 ;
for(var i=1;i<10;i++)
{
if(i%5==0)
{
continue;
}
num++;
}
alert(num); // 8
continue只是中断了当前这个循环,后面的循环会继续运行。不影响后面的使用.
with语句
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语句关联了location对象。这个意味着with语句的代码块内部每个变量首先被认为是一个局部变量。而如果在局部环境中找不到该变量的定义。就是查询location对象中是否有同名的属性。如果有同名的属性,则以location对象属性的值作为变量的值。(基本上用的非常少)
switch语句
switch语句与if语句联系最密切。
语法:
switch(条件)
{
case value: 语句;
break;
case value: 语句;
break;
case value: 语句;
break;
case value: 语句;
break;
case value: 语句;
break;
default: 语句;
}
switch语句中每一种情况(case)的含义就是:如果表达式等于这个值(value),则执行后面的语句.而break关键字则导致代码执行流跳出switch语句。如果省略break关键字。则会导致穿透,所以必须要有。
语法结构
switch(i)
{
case 25:alert("25");break;
case 35: alert("35"); break;
default:alert("Other");
}
switch(条件)条件里面可以是任意类型,常量,字符串,都行
var num = 25;
switch(true)
{
case num<0 :
alert("比0小");
break;
case num>=0&&num<=10:
alert("0到10之间");
break;
default:alert("数值不存在");
}