1.2 JavaScript流程控制
来源:互联网 发布:阿里云备案账号是什么 编辑:程序博客网 时间:2024/05/23 18:59
Js中有很多语句和控制结构来改变语句的默认执行顺序:
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解释器将会以调试的模式运行
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.2 JavaScript流程控制
- javascript流程控制、循环控制
- JavaScript流程控制
- JavaScript中的流程控制
- [JavaScript]-----流程控制语句
- javascript的流程控制
- JavaScript之流程控制
- JavaScript:流程控制语句
- JavaScript流程控制
- JavaScript程序流程控制
- JavaScript-流程控制switch
- JavaScript流程控制
- JavaScript流程控制
- day2-Javascript--流程控制
- JavaScript 流程控制语句
- JavaScript流程控制语句
- JavaScript 的异步流程控制
- javaScript(6)---流程控制语句
- 消除关于.NET的四个误解
- webkit内核源代码导读2: FrameLoader的初步分析
- How to select different app.config for several build configurations
- SGU142 Keyword
- Android 开发常用代码片段
- 1.2 JavaScript流程控制
- dudu kan
- PHP超全局变量:$_SERVER
- webui框架的利与弊
- 1.2 JavaScript运算符
- HTML5 移动Web的离线应用 applicationCache & manifest - 3
- hdu 2952 Counting Sheep(dfs)
- kvm创建虚拟机流程(1)
- 1.3 JavaScript函数