五、JS的三大流程控制:顺序控制、分支控制、循环控制
1、顺序控制:不控制其流程,就是顺序执行。
2、分支控制
①单分支
if(条件表达式){
语句
}
②双分支
if(条件表达式){
语句1
}else{
语句2
}
③多分支
if(条件表达式1){
语句1
}elseif(条件表达式2){
语句2
}elseif(条件表达式3){
语句3
}…………….
…….
强调一点:一旦找到一个满条件的入口,执行完毕后,就直接结束整个多分支流程
④switch多分支控制
switch(表达式){
case 常量1://常量可以是字符串,也可以是数值
语句1;
break; //break的作用是跳出整个switch
case 常量2:
语句2;
break;
case 常量n:
语句n;
break;
default://default可有可无
语句;
break;//最后一个break可有可无
}
总结:
JS的switch语句数据类型可以是JS支持的任何类型(数组和对象不考虑)
case 后面的值的数据类型可以是任意的,可以混杂使用
break作用是跳出整个switch
如果没有匹配的,则执行default语句
3、循环控制
①for循环
for(var i=0;i<5;i++){
document.writeln("你好!<br/>"); //writeln可以识别换行符,
}
②while循环
while(条件表达式){
执行语句;
}
例:
var a=0;
while(a<10){
document.writeln("你好!<br/>");
a++;
}
③do…while循环
do{
执行语句;
}while(条件表达式); //这里有分号不能漏掉
例:
var a=0;
do{
document.writeln("你好!<br/>");
a++;
}while(a<10);
案例:请编写一个程序,可以接收一个整数,并计算1+2+3+…n的值
var n=window.prompt("请输入一个整数");
n=parseInt(n);
var res=0
for(var i=1;i<=n;i++){
res+=I;
}
document.write("结果是"+res);
在浏览器中,我们可以通过调试工具来对JS代码进行调试,尤其是页面比较复杂的情况下,非常有用。请注意:首先要在Internet选项—高级 中取消 “禁止脚本调试”。
然后:工具—开发人员工具
六、JS函数与自定义函数
1、在html中引入js代码
<scriptlanguage="javascript"type="text/javascript">
</script>
language="javascript"和type="text/javascript"主要是不同浏览器对JS的支持不同,有的不认language="javascript";有的不认type="text/javascript"。为实现兼容,可以两个都写
2、JS自定义函数
案例:编写一个程序,可以接收两个数,并接收一个运算符号(+、-、*、/),然后用运算符对两数进行运算。如果多个页面都要用到这个功能,就可以使用自定义函数。
function counter(num1,num2,oper){
var res=0;
switch(oper){
case "+":
res=num1+num2;
break;
case "-":
res=num1-num2;
break;
case "*":
res=num1*num2;
break;
case "/":
res=num1/num2;
break;
}
return res;
}
var a=window.prompt("请输入一个数");
var b=window.prompt("请输入另一个数");
var oper=window.prompt("请输入一个运算符号");
a=parseInt(a);
b=parseInt(b);
document.write(counter(a,b,oper));
如果其它html文件要使用该函数,要怎么办呢?
把上面的函数单独拿出,写到JS文件(xxx.js),然后在需要的地方引入即可
引入JS的格式:
<script language="javascript" src="xxx.js"></script>
JS文件的写法:直接function,不需要html的任何标记,如function.js的代码:
function counter(num1,num2,oper){
var res=0;
switch(oper){
case "+":
res=num1+num2;
break;
case "-":
res=num1-num2;
break;
case "*":
res=num1*num2;
break;
case "/":
res=num1/num2;
break;
}
return res;
}
上面就是一个完整的JS文件的全部代码
3、JS系统函数
①eval()函数可计算某个字符串,并执行其中的的 JavaScript 代码,如:
eval("x=10;y=20;document.write(x*y)") =》得到200
②escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
unescape() 函数可对通过 escape() 编码的字符串进行解码。如:
var str1="平平";
var str2=escape(str1);
window.alert(str2);
var str3=unescape(str2);
window.alert(str3);
escape()和unescape()往往配合使用,防止乱码的出现
4、关于接收函数返回值的问题
var a=test()
window.alert(a);
如果test函数没有返回值,但你又接收了,则返回undefined
看一个递归函数
function abc(num1){
if(num1>3){
abc(--num1);
}
document.write(num1);
}
abc(5);
结果为:3 3 4
特别强调一下:JS的函数天然支持可变参数个数,如:
编写一个函数,可以接任意多个数,并计算它们的和
function abc(){
//在JS中有一个arguments,可以访问所有传入的值
//window.alert(arguments.length);
for(var i=0;i< arguments.length;i++){
window.alert(arguments[i]);
}
}
可以这样调用:
window.alert("abc(45,20,\"hello\")");//打出字符串: abc(45,20,"hello");//调用函数
abc(45,20,"hello");
window.alert("abc(30)");
abc(30);
window.alert("abc()");
abc();