第三章 javascript语句
一.流程控制语句
1.分支语句:javascript支持的分支语句主要有if和switch语句。
a.if语句
<script> //*************简单if语句 var a=3; if(a>2){ document.write('条件成立!a>2 <br>'); } //*************if...else语句 var a=3; if(a==2){ document.write('条件成立!a==2'); }else{ document.write('条件不成立!a==2 <br>'); } //**********多重嵌套if...else语句 var a=3; if(a<1){ document.write('a<1') }else if(a==1){ document.write('a==1') }else{ document.write('a>1') } </script>
b.switch语句
<script> var a=2; switch(a<=2){ case(a==0): document.write('a==0'); break; case(a==1): document.write('a==1'); break; case(a==2): document.write('a==2'); break; default:document.write('default相当于else!'); } </script>
2.循环语句
javascript提供了丰富的循环语句支持,主要有while循环、do while循环、for循环、for in循环。
<script> //*******while循环 var a=1; while(a<4){ a++; document.write(a+'\n'); } </script>
<script> //*******do while循环 var a=5; do{ a++; document.write(a+'\n'); }while(a<4) </script>
注意:while循环和do while循环的区别:while先判断后执行、循环体语句可能一次都不执行,do while是先执行后判断,所以循环体语句至少执行一次。
<script> //********for循环 //***************for的第一种情况: var a=3; for(var i=0;i<a;i++){ document.write(i);//012 } //当i=0时 0<3 打印0 i++之后 i=1 //当i=1时 1<3 打印1 i++之后 i=2 //当i=2时 2<3 打印2 i++之后 i=3 //当i=3时 3<3 不成立即不打印 此时i=3的 document.write('<br>'+i+'<br>');//因此打印出3 //***********for的第二种情况: for(var i=0;i<5;++i){ document.write(i); } document.write('<br>'+i+'<br>'); //为什么这里无关i++或者++i呢? //原因是我们所说的赋值运算,是将一个值赋值给另一个值,然后再自身相加 //而这里的i++==》i=i+1==>i赋值给i了,然后其自身再加1 //因此不论是i++还是++i,其最终的结果都是i自加1,结果不变 //*************for的第三种情况 for(var i=10;i>0;i--){ document.write(i); } document.write('<br>'); for(var i=10;i>0;--i){ document.write(i); } </script>
注意:一般情况下,当循环次数确定的情况下使用for循环。相比while和do while语法更简洁。
<script> //*******for in循环:其主要有两个功能:遍历数组下标,遍历对象的属性 var arr3=new Array(); arr3[0]=1;arr3[1]='lcl';arr3[2]='true'; arr3[6]=1.2; for(var i in arr3){ document.write(i+'.'); document.write(arr3[i]+'<br>'); } </script>
<!--******************做一个小实例:9*9乘法表--> <script> //首先9*9乘法表你会想到什么? //1*1=1 1*2=2 1*3=3 对不对? //那怎么实现呢?首先来实现1*n的结果 for(var i=1;i<10;i++){ // document.write(i+'<br>');//此时就会打印出1-9 // 从以上可知,循环中的i是1-9对不对? document.write('1*'+i+'='+i+' ' //以上就已经实现了1*n的结果,下面来实现n*n +'2*'+i+'='+2*i+' ' +'3*'+i+'='+3*i+' ' +'4*'+i+'='+4*i+' ' +'5*'+i+'='+5*i+' ' +'6*'+i+'='+6*i+' ' +'7*'+i+'='+7*i+' ' +'8*'+i+'='+8*i+' ' +'9*'+i+'='+9*i+'<br>' //写到这里那就基本完成了9*9乘法表 //但是我们要注意:凡是代码都不能写死了, //那么如何引入一个值来取代符号"1-9"提高代码利用率呢? ); } //************************进阶代码 for(var i=1;i<10;i++){ //先前我们就知道这里的i代表的是1-9; for(var j=1;j<10;j++){ document.write(i+'*'+j+'='+i*j+' '); } document.write('<br>'); } //*****************稍微美观代码 for(var i=1;i<10;i++){ for(var j=1;j<i+1;j++){ document.write(i+'*'+j+'='+i*j+' '); } document.write('<br>'); } </script>
3.循环控制语句
javascript提供了break和continue来改变循环的控制流。
<script> //*******终止循环break var a=3; for(var i=0;i<a;i++){ if(i==2){break;} document.write(i); } </script> <!--输出为:01--> <script> //*******结束本次循环continue var a=5; for(var i=0;i<a;i++){ if(i==3){continue;} document.write(i); } </script> <!--输出为:0124-->
二.常用特殊语句
1.语句块:所谓语句块,就是{}花括号包含的多条语句。
注意:该语句块中声明的变量,该变量的作用域并不是只在该语句块中。这一点区别于java。
javascript中作用域只分为两种:在函数中的局部变量,还有就是全局变量。
<script> { var a=1; var b=3; document.write(a+b); } </script>
2.空语句
空语句一般用作没有循环体的循环,其目的就是为了给数组作初始化工作。
<script> { var arr3=new Array(); for(var i=0;i<5;arr3[i++]=i+4); for(var index in arr3){ document.write(index+'.'); document.write(arr3[index]+'<br>'); } } </script>
3.异常捕捉/抛出语句
<script> try{ var a=3; a++; if(a>3){ throw new Error('a>3出现异常!'); } }catch(e){ document.write(e.message+'<br>'); }finally{ document.write('总会执行的语句!') } </script>
注意:try用于监听一段代码是否出现异常, throw new Error支持手动抛出异常,一旦发生了异常,try就会把异常交给catch,catch会把异常封装在异常类对象e中。而finally是不管有没有异常都会执行的一个语句块。
注意:在javascript中只能有一重catch,这区别于java。输出错误类信息是e.message而不是getmessage()方法。
4.with语句
with语句是用于避免重复书写,减少代码量。
<script> with(document){ write('a'); write('a'); write('a'); } </script>