1.函数一等公民
函数是一等公民的意思是当var 一个变量是,这个变量名和function的functionName名相同时,将会覆盖var的值使用函数function内的执行语句。
实例:
<script>
/*复习一下: var有变量提升 let 没有*/
// document.write(a)
// let a = '123' //结果是没有输出,没有变量提升
//var a ='123' //结果是undefined,初始值,右边梁提升
注意: 函数也有变量提升 所以函数可以在定义之前使用
/* ★下面这个例子 体现了函数是一等公民 */
/* 函数 和 var 都会变量提升,但是函数的优先级是最高的,会排在var的前面,在浏览器中的优先级情况:
function fn(){
document.write('我爱js')
}
undefined*/
/* 使用函数 */
fn();
/* 变量的名字和函数的名字重名了,这种情况是在 定义函数之前使用fn() 因为函数的优先级比较高 把var fn变量覆盖了*/
var fn = '123123'
/* 定义函数 */
function fn(){
document.write('我爱js')
} //结果是函数'我爱js'输出
</script>
2.多重循环
多重循环其实就是多重for循环,
for( 变量初始值 ; 变量取值范围 ; 变量自增/自减){
执行程序
}
for(var i=1;i<=3;i++){
for(var j=1;j<=2;j++){
document.write('内层执行'+i+'遍,外层执行'+j+'次<br>')
}
}
我们用最简单的实例来练习,九九乘法表;
<script>
/* 一共要执行9遍 */
for(var i=1;i<=9;i++){
/* 执行多少次 由i决定 */
for(var j=1;j<=i;j++){
if(i*j<10){
/* 结果小于10 多加两个空格保持对齐 */
document.write( i+'x'+j+'='+(i*j)+' ');
}else{
/* 两位数不用多加空格 */
document.write( i+'x'+j+'='+(i*j)+' ');
}
}
/* 一行打印完毕之后 再加一个换行 */
document.write('<br>')
}
</script>
//i+'x'+j+'='+(i*j)=======>打印在网页上的代码;
3.调试
调试就是在运用循环或者后面做项目时出错,为了方便确定错误的点在哪里使用调试的办法找出,一般有三个方法:①alert ②debugger ③console.log。
这三种方法使用最多的就是第三种console.log;
比如说这样的一个死循环
<script>
for(var i = 0;i<5;i++){
document.write(i);
console.log(i)
// debugger
// alert(i) //在网页弹出i执行的结果会一个一个展示。
}
</script>
debugger
console.log()
4.break
break语句用于终止某个循环,使程序跳到循环块外的下面语句,在循环中位于break后的语句将不再执行,break 语句不仅可以用在for循环中,也可以用在其他循环中。
重点:①break用于终止循环②在break后的语句不再执行
<script>
//介绍一下数组,数组的数据在[]里面,从第一个数据其实是第0位,arr.length是数组的长度
/* 0 1 2 3 4 */
let arr = [10, 20, 30, 40, 10];
for (var i = 0; i < arr.length; i++) {
/* 当arr[i]的值是40的时候,整个循环就终止了 不再继续循环了 */
if (arr[i] > 30) {
break;
}
document.write(arr[i] + '<br>')
}
</script>
练习
<script>
//输入学院成绩,如果输入负数,将提示输入有误重新输入,否则就输入学院成绩,使用break用法。
for(var i = 1;i<=5;i++){
var str = parseInt(prompt('请输入学员的成绩:'));
if(str < 0){
document.write('您输入有误,请重新输入!')
break;
}
document.write('第' + i +'名学院的成绩为:' + str +'<br>');
}
</script>
5.continue
continue与break不同;continue终止的是代码符合条件时这一个循环语句不执行,下一次循环依旧执行,也就是说continue退出本次循环,继续后面的循环,break则将break满足语句条件时后面代码将不在执行。
例如:
<script>
let arr = [10,20,30,40,10];
for(let i=0;i<arr.length;i++){
if(arr[i]>30){
/* 跳过本次循环后面的document.write(arr[i]+'<br>') 代码不再执行 ,也就是当i=40时这次循环跳过,不影响下面语句执行*/
continue;
}
document.write(arr[i]+'<br>')
}
</script>