控制语句
if 控制语句
功能说明
- 如果表达式的值为true则执行语句1,
- 否则执行语句2
//if-else基本格式
if (表达式){
语句1;
......;
}
else{
语句2;
.....;
}
var x= (new Date()).getDay();
//获取今天的星期值,0为星期天
var y;
if ( (x==6) || (x==0) ) {
y="周末";
}
else{
y="工作日";
}
alert(y);
//等价于
y="工作日";
if((x==6)||(x==0)){
y="周末";
}
- if 可以单独使用
//if语句嵌套格式
if (表达式1) {
语句1;
}else if (表达式2){
语句2;
}else if (表达式3){
语句3;
} else{
语句4;
}
var x= (new Date()).getDay();
if (x==1){
y="星期一";
}else if (x==2){
y="星期二";
}else if (x==6){
y="星期六";
}else if (x==0){
y="星期日";
}else{
y="未定义";
switch 选择控制语句
功能说明
- 如果给定的值等于case,执行以后的所有语句
- 否则执行default的语句
switch基本格式
switch (表达式) {
case 值1:语句1;break;
case 值2:语句2;break;
case 值3:语句3;break;
default:语句4;
}

switch(x){
case 1:y="星期一"; break;
case 2:y="星期二"; break;
case 3:y="星期三"; break;
case 4:y="星期四"; break;
case 5:y="星期五"; break;
case 6:y="星期六"; break;
case 7:y="星期日"; break;
default: y="未定义";
}
switch 与if else 的区别
- if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;
- 而 switch 只能对基本类型进行数值比较。两者的可比性就仅限在两个基本类型比较的范围内。
- 说到基本类型的数值比较,那当然要有两个数。然后重点来了——
- if 语句每一句都是独立的,看下面的语句:
- if (a == 1) …
- else if (a == 2) …
- 这样 a 要被读入寄存器两次,1 和 2 分别被读入寄存器一次。于是你是否发现其实 a 读两次是有点多余的,在你全部比较完之前只需要一次读入寄存器就行了,其余都是额外开销。但是 if 语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道你其实比较的是同一个 a。
- switch比else if结构更加简洁清晰,使程序可读性更强,效率更高。
- 于是 switch case 就出来了,把上面的改成 switch case 版本:
- if 语句每一句都是独立的,看下面的语句:
switch (a) {
case 0:
break;
case 1:
}
总结:
- switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化
- switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选 择执行哪一个case的语句块
- if..else 的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载 一次。
- 所以在多路分支时用switch比if..else if .. else结构要效率高。
for循环基本格式
功能说明
- 实现条件循环,当条件成立时,执行语句1,否则跳出循环体
for (初始化;条件;增量){
语句1;
...
}
for (var i=1;i<=7;i++){
document.write("<H"+i+">hello</H "+i+"> ");
document.write("<br>");
}
----------------------------------------------
var arr=[1,"hello",true]//var dic={"1":"111"}
for (var i in arr){
console.log(i)
console.log(arr[i])
}
注意:
doms=document.getElementsByTagName("p");
for (var i in doms){
console.log(i); // 0 1 2 length item namedItem
//console.log(doms[i])
}
//循环的是你获取的th一个DOM元素集,for in用来循环对象的所有属性,dom元素集包含了你上面输出的属性。
//如果你只要循环dom对象的话,可以用for循环:
for (var i=0;i<doms.length;i++){
console.log(i) ; // 0 1 2
//console.log(doms[i])
}
结论:
- for i in 不推荐使用.
while 循环控制语句
功能说明
- 运行功能和for类似,当条件成立循环执行语句花括号{}内的语句,否则跳出循环
while循环基本格式
while (条件){
语句1;
...
}
var i=1;
while (i<=7) {
document.write("<H"+i+">hello</H "+i+"> ");
document.write("<br>");
i++;
}
//循环输出H1到H7的字体大小
<script language="JavaScript">
/* sayhello是定义的函数名,前面必须加上function和空格*/
function sayHello(){
var hellostr;
var myname=prompt("请问您贵姓?","苑");
hellostr="您好,"+myname+'先生,欢迎进入"探索之旅"!';
alert(hellostr);
document.write(hellostr);
}
//这里是对前面定义的函数进行调用
sayHello();
</script>
练习:
- 分别用for循环和while循环计算出1-100的和?
var i=1;
var sum=0;
for(i=1;i<=100;i++){
sum+=i;
}
//-------------------//
var i=1;
var sum=0;
while(i<=100){
sum+=i;
}
异常处理
try {
//这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
// 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
//e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
//无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}
注:
- 主动抛出异常 throw Error(‘xxxx’)