回顾
-
运算符
-
算术运算符
- 一元运算符:++ —
- 二元运算符 + – * / %
- 关系运算符:> >= < <= == !=
- 逻辑运算符:&& || !
- 赋值运算符:= += -+ *= /= %=
- 点运算符 document.write()
-
算术运算符
-
判断语句(条件语句)
- if:单分支
- if-else-:双分支
- else if:多分支
- switch-case :多路选择
-
数组:
- 内存中一组连续的空间
- 通过下标来区分各个空间,下标从0开始
-
声明数组:
- var 数组名=[]
- var 数组名=new Array([元素1,元素2]);
-
数组的方法:
- 数组名.sort() 数组排序
- 数组名.reverse():数组翻转
- 数组名.join(): 数组连接成字符串
- 数组.length: 数组的长度
-
函数
- 函数是一个代码块,可以多次调用,能够很容易的实现模块化编程
- 函数分为预定义函数和自定义函数
- 预定义函数:isNaN(),indexOf(),parseInt(),parseFloat(),select()
- 自定义函数语法
function 函数名([参数]){
//函数体
}
-
- 参数分为形式形数(形参)和实际参数(实参)
- 通过函数名来调用函数
- 函数定义的时候不执行,调用的时候才执行函数
三元运算符(?:)
语法:表达式?值1:值2
描述:如果表达式的结果为真,返回值1,否则返回值2
循环
重复执行称为循环
循环的分类
- for循环
- while循环
- do-while循环
- for-in循环
for循环
语法:
for(初始值;条件;增量){
//循环体
}
只要条件为真,就一直循环,一直循环到条件不成立为止
最简单的例题(输出十句字符串)
调整一下增量
分析题:
- 如下循环输出什么?
for(var j=1;j<=10;j–){
document.write(”);
}
答:死循环,j–,j永远小于10
- 如下循环输出什么?
for(var j=1;j<=10;){
alert(”);
}
答:死循环,因为j永远等于1,1永远小于10
- 如下循环输出什么?
for(var j=1;;j–){
alert(”);
}
答:没有条件永远为true,这也是死循环
- 一个典型的死循环
for(;;){
alert(‘我注意你好久了’);
}
脚下留心:循环必须要有出口,不能出现死循环。
思考:在一个循环了n次的循环中,初始值执行了几次?条件执行了几次?增量执行了几次?
答:初始值1次,条件n+1次,增量n次
for循环括号中可以放多个表达式
while循环
语法:
while(条件){
//代码
}
只要条件为true,就一直循环,一直循环到条件为false
简单的例题
多学一招:如果for和while的循环体就一句代码,大括号可以省略。
do-while
语法:
do
{
//循环体
}while(条件)
例题
可以更改成如下:
也可以更改如下:
for-in循环
for-in循环用了遍历数组和对象
语法:
for(变量 in 数组){
//循环体
}
脚下留心:变量保存的不是数组中的值,而是数组值的下标
例题:
例题(打印金字塔直线)
- 代码
<script type=”text/javascript”>
for(var i=20;i<=780;i+=40){
document.write(‘<hr width=”‘+i+’px”>’);
}
</script>
- 拼接后的字符串
- 运行结果
例题(遍历一维数组)
脚下留心:数组的长度是4,下标最大值是3,因为下标是从0开始的。
在上面的例题中,stu.length执行了n+1次,效率低了,其实stu.length只要执行一次就可以。
例题(求数组中的最大值)
思路:声明一个变量(num)用来保存最大值,首先假设第0个数据是最大的,然后从第一个元素开始依次和num比较,如果有个数大于num,就将这个数付给num,这样就保证num中的数据肯定是最大的。
实现代码:
例题:(求数组的平均值)
思路:声明一个变量(sum)用来保存数组的和,然后依次从第0个元素依次向后加,每次加的和都付给sum。
分析
i值 sum值
0 score[0]
1 score[0]+score[1]
2 score[0]+score[1]+score[2]
3 score[0]+score[1]+score[2]+score[3]
4 score[0]+score[1]+score[2]+score[3]+score[4]
跳转语句
- break(中断): 中断循环
- continue(继续):中断当前循环,进入下一个循环
例题一:
<script type=”text/javascript”>
for(var i=1;i<=10;i++){
if(i==5) //i==5的时候中断循环,输出4句
break; //中断循环
document.write(i+’锄禾日当午<br>’);
}
</script>
例题二:
总结流程控制语句的分类
-
判断语句
- if 单分支
- if-else 双分支
- else if 多分支
- switch-case 多路选择,多路判定
-
循环语句
- for
- while
- do-whlie
- for-in 就是用来遍历数组和对象
-
跳转语句
- break 中断循环
- continue 跳出当前循环,进入下一个循环
思考:for、while、do-while的区别?
答:
- 这三种循环是相通的,相互可以替代。
- 如果明确知道循环多少次首选for循环,while和do-while用于循环到条件不成立为止。
- While是先判断再执行,do-while先执行再判断
- While条件不成立就不执行,do-while条件不成立也要执行一次。
循环的例题
例题一:打印埃及图像
每个字母对应一个埃及图像,输入n或N退出
do-while实现(首选)
<style type=”text/css”>
body{
font-family:Webdings;
font-size:80px;
}
</style>
<script type=”text/javascript”>
do{
var str=prompt(‘请输入一个字符,输入n或N退出’,”);
if(str==’n’ || str==’N’)
break;
document.write(str);
}while(str!=’n’ && str!=’N’);
</script>
while循环实现
var str=prompt(‘请输入一个字符,输入n或N退出’,”);
while(str!=’n’ && str!=’N’){
document.write(str);
str=prompt(‘请输入一个字符,输入n或N退出’,”);
}
for循环实现
for(;;){
var str=prompt(‘请输入一个字符,输入n或N退出’,”);
if(str==’n’ || str==’N’)
break;
document.write(str);
}
例题二:从1加到100
for循环实现
分析
While循环实现
Do-while循环实现
例题三:(自动分行)
<style type=”text/css”>
table{
width: 780px;
margin: auto;
}
table,td{
border: #000 solid 1px;
border-collapse: collapse; /*collapse:塌陷*/
}
</style>
<table>
<tr>
<script type=”text/javascript”>
for(var i=1;i<=100;i++){
document.write(‘<td><img src=”images/’+i+’.bmp”/></td>’);
if(i%10==0) //一行放10个
document.write(‘</tr><tr>’);
}
</script>
</tr>
</table>
多重循环
两重以上称为多重循环,最常用的就是两重循环
例题(打印阶梯数字)
例题(遍历二维数组)
分析:
代码:
作业
- 去除字符串中的空格
- 九九乘法表
- 打印水仙花数(三位数abc a3+b3+c3=abc)