菜鸟笔记-函数流程控制语句

一 循环语句

1. while

(1) 语法

while(条件表达式){

循环执行代码段

}


(2) 流程

a. 判断条件表达式的值

b. 当值为true时循环执行代码段

c. 当值为false时退出循环体

(3) 特性

a. 先检查条件,再执行循环

b. 条件不满足时则循环一次也不执行

(4) 时机

一个动作被重复执行到满足某个条件时

2. do while

(1) 语法
do{
循环执行时的代码段
}
while(条件表达式);

(2) 流程

a. 先执行循环体内代码再进行判断

b. 如果表达式的值为true,则重复执行代码段

c. 如果表达式的值为false,则推出循环体

(3) 特性

先执行循环,再进行判断
循环体内代码至少执行一次

(4) 时机

希望一个动作至少被执行一次时

var age = 58;

do{
document.write('how are you today?');
age++;

}while( age <= 50 )

//输出一次 how are you today?

3. for

(1) 语法

for(循环变量 = 初值;循环条件;递增/递减计数器){
循环代码段
}

(2) 流程

a. 用循环变量初始值与循环条件相比较,确定返回值

b. 如果返回值为true则执行循环体

c. 执行完一次后进行递增/递减预算

d. 将运算结果与循环条件相比较,如果返回值为true则继续执行循环体,
如果返回值为false则推出循环体

(3) 时机

重复一个动作到一定次数时

例子:隔行变色

document.write('<table border="1">');

var rows = prompt('请输入行数');
var clos = prompt('请输入列数');

//i 代表 行数
//j 代表 列数
for( var i = 1; i <= rows; i++ ){
//通过判断奇偶数来判断隔行变色
if( i%2!=0 ){
document.write('<tr class="hd">');
}else{
document.write('<tr>');
}

for(var j = 1; j <= clos; j++){
document.write('<td>'+i+'格子'+j+'</td>');
}

document.write('</tr>');
}

document.write('</table>');

4. for in

(1) 语法
for(声明变量in对象){
代码段
}

(2) 作用 枚举对象属性

(3) 注意事项

a. 循环输出的属性顺序不可预知
b. 对象的值不能是null 或 undefined

var student = {
'name' : 'anna',
'age' : 18,
'work' : 'IT'
}

for(var p in student){
console.log(p)
}
var arr = ['jack','anna','tina','merrry']

for(var i in arr){
console.log(i)
}

二 跳转语句

1. return 终止函数体的运行,并返回一个值

2. break 终止整个循环,不再进行判断

var age = 18;

while( age <= 50 ){
if( age == 25 ){

break;
}
document.write(age+"真是如花年纪<br>");

age++;

}

3. continue 结束本次循环,接着去判断是否执行下次循环

var age = 18;

while( age <= 50 ){
if( age == 25 ){

age++;
continue; //跳出本次循环,直接诶进入到下次循环
}
document.write(age+"真是如花年纪<br>");

age++;

}

三 选择语句

1. if

(1) 语句
if(条件表达式1){
代码段1
}else if(条件表达式2){
代码段2
}else{
代码段3
}

(2) 流程

a. 判断条件1, 如果返回值为true则执行代码段1

b. 如果条件1的返回值为false则跳过语句块1并检测条件2

c. 如果所有表达式的值为false则执行else后面的语句

(3) 特性

a. 结构复杂,可探讨测试多个条件表达式

b. 可测试多个条件表达式

c. 表达式的值是动态的

d. 适用于任意类型的数据

e. 可处理复杂的逻辑关系


2. switch

(1) 语法

switch(条件表达式){
case 标签1;
break;
......
default;
代码段n;
}

(2) 流程

a. 计算表达式的值,并于个标签相比较

b. 若找到与之匹配的标签,则执行其后的代码段

c. 若没有找到与之匹配的标签则直接执行default之后的代码段

(3) 格式

case标签为常量,可以是字符串或数字

每个标签均以冒号:为结束

虽然break与default 为可选项,但为了逻辑清晰最好不要省略

case标签的值必须和条件表达式的值完全匹配

(4) 特性

结构简介,专为多重选择设计

仅可测试一条条件表达式

表达式的值具有离散性

表达式的值是固定的,不会动态变化的

仅能应用整数,枚举,字符串等类型数据

仅能处理多个枚举型逻辑关系

var Blue = "blue";
var Red = "red";
var White = "white";

var getColor = "red";

switch(getColor){
case Blue: alert('blue');
break;
case Red: alert('red');
break;
case White: alert('white');
break;
default: alert("other");
}

3. with 语句

将代码的作用域设置到一个特定的对象中

var box = {
'name' : 'anna',
'work' : 'it'
}

with(box){
var n = name;
var w = work;
console.log(n); //anna
console.log(w); //it
}

四 异常处理语句

1. throw 创建或抛出异常(exception)

throw 语句允许我们创建自定义错误。
如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
语法 throw exception
异常可以是 JavaScript 字符串、数字、逻辑值或对象。

<h1>我的第一个javascript程序</h1>
<p>请输入5-10之间的数字</p>
<input type="text" name="" id="demo">
<button onclick="myFunction()">测试输入值</button>
<p id="mess"></p>
<script type="text/javascript">
function myFunction(){
try{
var x = document.getElementById('demo').value;
if (x=="") throw "值为空";
if (isNaN(x)) throw "不是数字";
if (x<5) throw "值太小";
if (x>10) throw "值太大"    ;    
}catch(err){
var y = document.getElementById('mess');
y.innerHTML = "错误是"+err

}
}
</script>

2. try 指明需要处理的代码段

3. catch 捕获异常

var txt = "";
function myMes(){
try{
addlert('真的是美女啊');//语句测试代码块的错误,一般把可能会出错的代码放到这里
}catch(err){
//只有try里面的代码块发生错误时,才会执行这里的代码,参数err记录着try里面代码的错误信息
txt += "这是一条错误信息。\n\n";
txt += err.message;
txt += "点击继续\n\n";
alert(txt);
}
}

4. finally 后期处理

try{
console.log(0);
}catch (err){
console.log(1);
console.log(hello);
}finally {
console.log(2);
}
//最后结果分别打印出 0 2
/*
try{
a.b.c();
}catch (e){
console.log(1);
console.log(hello);
}finally {
console.log(2);
}
*/
//最后结果分别打印出 1 2 报错:hello is not defined
/*
try{
a.b.c();
}catch (e){
console.log(1);
try{
console.log(hello);
}catch (e){
console.log(3);
}
}finally {
console.log(2);
console.log(word);
} 
*/
//最后结果分别打印出 1 3 2 报错:word is not defined
/*
try{
a.b.c();
}catch (e){
console.log(1);
console.log(hello);
}finally {
console.log(2);
console.log(word);
}*/
//最后结果分别打印出 1 2 报错:word is not defined

总结:
try里面的代码报错的时候,catch里面的代码才会执行,finally里面的代码永远会执行

catch和finally里面,正常的代码会从上到下顺序执行

如果只是catch里面代码出错,则报catch里面的错误

如果catch和finally都出错则会报finally里面的错误

猜你喜欢

转载自www.cnblogs.com/Anna-jia/p/9361348.html