1.2 JavaScript流程控制
2013-05-22 14:15
435 查看
Js中有很多语句和控制结构来改变语句的默认执行顺序:
1、
条件语句,js解释器可以根据一个表达式的值来判断是执行还是跳过这些语句,如if语句和switch语句。
2、
循环语句,可以重复执行语句,如while和for语句。
3、
跳转语句,可以让解释器跳转至程序其他部分继续执行,如break、return和throw语句。
Javascript 语句小结
部分示例代码:
//递归函数
function factorial(n)
{
if(n <=1) return 1;
returnn*factorial(n-1);
}
vary = 4;
varvalue =factorial(y);
//alert(value);//打印结果为24(4*3*2*1)
//for/in循环
vardate = [1,4,6,32];
for(var i in date) //将 date的属性名赋值给i,只有”可枚举“的属性才会遍历到,代码中定义的所有属性和方法都是可枚举的。js核心所定义的内置方法不是”可枚举的“,比如所有对象都有的toString()方法,for/in循环并不枚举这个属性
{
//alert(date[i]);//分别打印1、4、6、32
}
//for循环的三个表达式之间用分号分隔,分别负责初始化操作,循环判断和计数器变量的更新
for(var i=0;i<date.length;i++)
{
// alert(date[i]);
}
//要解释for循环是如何工作的,列出与之等价的while循环
var j=0;
while(j<date.length)
{
//alert(date[j]);
j++;
}
/*
*switch表达式与case表达式的比较匹配实际上是"==="恒等比较;
*"default:"标签可以放置在switch语句内的任何地方
*/
//break语句和continue语句,对于一条带标签的函数定义语句来说,不能从函数内部通过这个标签来跳转到函数外部
mainloop:for (var i=0;i<3;i++)
for(var j=0;j<3;j++)
{
if(i==1&&j==1)
{
breakmainloop;//跳出最内层循环,即循环从i=2,j=0开始(带有标签mainloop时,直接跳出整个循环)
//continuemainloop;//重新开始最内层的循环,循环从i=1,j=2开始(带有标签mainloop时,循环从i=2,j=0开始)
}
//alert("i="+i+" j="+j);
}
//throw语句,异常处理程序是用try/catch/finially语句的catch从句中编写的
functionfactor(x)
{
if(x<0)throw new Error("x不能为负数");
returnx*x;
}
try{
//var n = Number(prompt("请输入一个正整数:",""));
varn = 9;
varf = factor(n);
//alert("f="+f);
}
catch(ed)
{
alert(ed);
}
//下面代码说明了try/catch/finially的语法和使用目的
try{
//通常来讲,这里的代码会从头执行到尾而不会产生任何问题
//但有时会抛出一个异常,要么是由throw语句直接抛出异常
//要么是通过调用方法间接抛出
}
catch(e){
//当且仅当try语句抛出了异常,才会执行这里的代码
//这里可以通过局部变量e来获取对 Error对象或者抛出的其他值的引用
//这里的代码块可以基于某种原因处理这个异常,亦可以忽略这个异常
//还可以通过throw语句重新抛出异常
}
finally{
//不管try语句块是否抛出了异常,这里的逻辑总是会执行,终止try语句块的方式有:
//1、正常终止,执行完语句块的最后一句
//2、通过break、continue或return语句终止
//3、抛出一个异常,异常被catch从句捕获
//4、抛出一个异常,异常未被捕获,继续向上传播
}
//with语句,严格模式中禁止使用with语句,非严格模式也不推荐使用。在对象嵌套层次很深的时候常会使用with语句来简化代码编写
//只有查找标识符的时候才会用到作用域链
//如:
functionnamechang2()
{
varf = document.forms[0];debugger;//当调试程序可用并运行时,js解释器将会以调试的模式运行
<
a973
p> f.name1.value="小兵勇猛(with方法)";
f.adress.value="北京西单(正常方法)";
}
functionnamechang1()
{
with(document.forms[0]){
//直接访问表单元素
name1.value="兵兵兵(with方法)";
adress.value="新疆乌鲁木齐(正常方法)";
}
}
//"usestrict",目的是说明后续的代码将会解析为严格代码,以严格模式执行。他只能出现在脚本代码的开始或函数体的开始、任何实体语句之前
/*
*1、严格模式中禁止使用with语句
*2、在严格模式中,所有变量都要先声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象的属性赋值,将会抛出一个引用错误异常
*3、在严格模式中,调用的函数(不是方法)中的this值是undefined。(在非严格模式中,调用的函数中this值总是全局对象)。可以用这种特性来判断javaScript实现是否支持严格模式
*/
varhasStrictModel = (function(){"use strict"; return this ===undefined;}());
//alert("hasStrictModel="+hasStrictModel);
1、
条件语句,js解释器可以根据一个表达式的值来判断是执行还是跳过这些语句,如if语句和switch语句。
2、
循环语句,可以重复执行语句,如while和for语句。
3、
跳转语句,可以让解释器跳转至程序其他部分继续执行,如break、return和throw语句。
Javascript 语句小结
语句 | 语法 | 用途 |
Break | Break [label]; | 退出最内层循环或退出switch语句,又或退出label指定的语句 |
Case | Case expression; | Switch语句中标记一条语句 |
Continue | Continue [label]; | 重新开始最内层的循环或重新开始label指定的循环 |
Debugger | Debugger; | 断电器调试 |
Default | Default; | 在switch语句中标识默认的语句 |
Do/while | Do statement while (expression) | While循环的一种替代形式 |
Empty | ; | 什么都不做 |
For | For(init;test;incr)statement | 一种简写的循环 |
For/in | For(var in object)statement | 遍历一个对象的属性 |
Function | Function name([param[],…]){body} | 声明一个函数 |
If/else | If(expr)statement1 [else statement2] | 执行statement1或者statement2 |
Lable | Label:statement | 给statement指定一个名字 |
Return | Return [expression]; | 从函数返回一个值 |
Switch | Switch(expression){statement} | 用case或者“default”语句标记的多语句分支 |
Throw | Throw expression | 抛出异常 |
Try | Try{statements} [catch {handler statements}] [finally {cleanup statements}] | 捕获异常 |
Use strict | “Use strict” | 对脚本和函数应用严格模式 |
Var | Var name=[=expr][,…] | 声明并初始化一个或多个变量 |
While | While (expression) statement | 基本的循环语句 |
With | With(object) statement | 扩展作用域链(不赞成使用,难于优化,运行慢) |
部分示例代码:
//递归函数
function factorial(n)
{
if(n <=1) return 1;
returnn*factorial(n-1);
}
vary = 4;
varvalue =factorial(y);
//alert(value);//打印结果为24(4*3*2*1)
//for/in循环
vardate = [1,4,6,32];
for(var i in date) //将 date的属性名赋值给i,只有”可枚举“的属性才会遍历到,代码中定义的所有属性和方法都是可枚举的。js核心所定义的内置方法不是”可枚举的“,比如所有对象都有的toString()方法,for/in循环并不枚举这个属性
{
//alert(date[i]);//分别打印1、4、6、32
}
//for循环的三个表达式之间用分号分隔,分别负责初始化操作,循环判断和计数器变量的更新
for(var i=0;i<date.length;i++)
{
// alert(date[i]);
}
//要解释for循环是如何工作的,列出与之等价的while循环
var j=0;
while(j<date.length)
{
//alert(date[j]);
j++;
}
/*
*switch表达式与case表达式的比较匹配实际上是"==="恒等比较;
*"default:"标签可以放置在switch语句内的任何地方
*/
//break语句和continue语句,对于一条带标签的函数定义语句来说,不能从函数内部通过这个标签来跳转到函数外部
mainloop:for (var i=0;i<3;i++)
for(var j=0;j<3;j++)
{
if(i==1&&j==1)
{
breakmainloop;//跳出最内层循环,即循环从i=2,j=0开始(带有标签mainloop时,直接跳出整个循环)
//continuemainloop;//重新开始最内层的循环,循环从i=1,j=2开始(带有标签mainloop时,循环从i=2,j=0开始)
}
//alert("i="+i+" j="+j);
}
//throw语句,异常处理程序是用try/catch/finially语句的catch从句中编写的
functionfactor(x)
{
if(x<0)throw new Error("x不能为负数");
returnx*x;
}
try{
//var n = Number(prompt("请输入一个正整数:",""));
varn = 9;
varf = factor(n);
//alert("f="+f);
}
catch(ed)
{
alert(ed);
}
//下面代码说明了try/catch/finially的语法和使用目的
try{
//通常来讲,这里的代码会从头执行到尾而不会产生任何问题
//但有时会抛出一个异常,要么是由throw语句直接抛出异常
//要么是通过调用方法间接抛出
}
catch(e){
//当且仅当try语句抛出了异常,才会执行这里的代码
//这里可以通过局部变量e来获取对 Error对象或者抛出的其他值的引用
//这里的代码块可以基于某种原因处理这个异常,亦可以忽略这个异常
//还可以通过throw语句重新抛出异常
}
finally{
//不管try语句块是否抛出了异常,这里的逻辑总是会执行,终止try语句块的方式有:
//1、正常终止,执行完语句块的最后一句
//2、通过break、continue或return语句终止
//3、抛出一个异常,异常被catch从句捕获
//4、抛出一个异常,异常未被捕获,继续向上传播
}
//with语句,严格模式中禁止使用with语句,非严格模式也不推荐使用。在对象嵌套层次很深的时候常会使用with语句来简化代码编写
//只有查找标识符的时候才会用到作用域链
//如:
functionnamechang2()
{
varf = document.forms[0];debugger;//当调试程序可用并运行时,js解释器将会以调试的模式运行
<
a973
p> f.name1.value="小兵勇猛(with方法)";
f.adress.value="北京西单(正常方法)";
}
functionnamechang1()
{
with(document.forms[0]){
//直接访问表单元素
name1.value="兵兵兵(with方法)";
adress.value="新疆乌鲁木齐(正常方法)";
}
}
//"usestrict",目的是说明后续的代码将会解析为严格代码,以严格模式执行。他只能出现在脚本代码的开始或函数体的开始、任何实体语句之前
/*
*1、严格模式中禁止使用with语句
*2、在严格模式中,所有变量都要先声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象的属性赋值,将会抛出一个引用错误异常
*3、在严格模式中,调用的函数(不是方法)中的this值是undefined。(在非严格模式中,调用的函数中this值总是全局对象)。可以用这种特性来判断javaScript实现是否支持严格模式
*/
varhasStrictModel = (function(){"use strict"; return this ===undefined;}());
//alert("hasStrictModel="+hasStrictModel);
相关文章推荐
- javascript学习(2)——[基础回顾]运算符、表达式、流程控制语句
- JavaScript流程控制语句
- JavaScript流程控制-循环结构
- 网站前端_JavaScript-基础入门.0006.JavaScript流程控制
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第22讲_js三大流程控制(顺序流程、分支控制、循环控制)_学习笔记_源代码图解_PPT文档整理
- javascript语法详解(七)------流程控制
- JavaScript语法学习2--运算符、流程控制语句
- JavaScript-流程控制之三目运算?:单双数判断
- 高性能JavaScript 循环语句和流程控制
- JavaScript1 js的流程控制
- JavaScript 流程控制语句
- JavaScript基础语法、语法规范、标识符与变量、数据类型、运算符、流程控制
- JavaScript思维导图—流程控制
- Javascript 链式操作以及流程控制
- 二、JavaScript语言--JS基础--JavaScript进阶篇--流程控制语句
- JavaScript学习笔记——流程控制
- JavaScript中使用Callback控制流程介绍
- javascript基础(控制流程(循环 while,for))(十二)
- JavaScript异步流程控制的前世今生
- Struts1.2 控制流程