JavaScript基本概念(四)
来源:互联网 发布:js object to string 编辑:程序博客网 时间:2024/05/16 10:58
七、语句
1、表达式语句
- 赋值语句
- delete运算符:用于删除一个对象的属性。
delete o.x;
- 函数调用
2、复合语句和空语句
- 复合语句:用花括号将多条语句括起来。语句块结尾不需要分号,块中的原始语句必须以分号结束。
- 空语句:包含0条语句的语句。
;
3、声明语句
1)var
var name1 [= value1] [,...,nameN [= valueN]];
2)function
function funcname(arg1,...,argn){ statements}
4、条件语句
1)if语句
if (condition){ statement1}else{ statement2}
2)else if
if (condition1){ statement1}else if (condition2){ statement2}else{ statement3}
3)switch语句
switch (expression) { case value: statement break; case value: statement break; case value: statement break; case value: statement break; default: statement}
break会导致代码执行流跳出switch语句。如果省略,就会导致执行完当前case后,继续执行下一个case。
特别说明,switch可以使用任何数据类型;并且,每一个case的值不一定是常量,可以是变量,甚至是表达式。
5、循环
1)while语句
前测试循环语句。先判断再执行,满足条件才会执行循环体内的代码块。
while (expression){ statement}
2)do-while语句
后测试循环语句。无论是否满足条件,都会执行一次循环体内的代码块。
do { statement}while (expression);
3)for语句
- 前测试循环语句。
- 具有在循环之前初始化变量和定义循环后要执行的代码的能力。
- for语句中的初始化表达式、控制表达式和循环后的表达式都是可选的。
for (initialization; expression; post-loop-expression){ statement}
- 在for循环的变量初始化表达式中,可以不使用var关键字,该变量的初始化可以在外部执行。
- 在循环内部定义的变量可以在外部访问到,这是因为ECMAScript中不存在块级作用域。
var count = 10;for (var i = 0; i < count; i++){ alert(i);}alert(i); // 10
4)for-in语句:迭代语句,可以用来枚举对象的属性。
for (property in expression){ statement}
使用for循环来遍历数组元素非常简单,而for-in循环则是用来更方便地遍历对象属性成员。
//for循环遍历数组元素for (var i=0;i<a.length;i++){ console.log(a[i]);}//for-in循环遍历数组元素for (i in a) { console.log(i);}//遍历对象属性成员//将属性名字赋给变量p,输出每一个属性的值for (var p in o) { console.log(o[p]);}
如果要迭代的对象的变量值为null或undefined,会抛出错误。但在ECMAScript5中,只是不执行该循环体,不会抛出错误。所以,建议在使用for-in循环之前,先检测该对象是否为null或undefined。
6、跳转
1)标签语句(label语句):在代码中添加标签。
label:statement
- 定义的标签可以在将来的break或continue语句引用。
- 加标签的语句一般都与循环语句配合使用。
2)break语句
break;break labelname;
- 单独使用的作用是立即退出最内层的循环或switch语句。
- 当break和标签一块使用时,程序将跳转到这个标签所标识的语句块的结束,或直接终止这个闭合语句块的执行。
var num = 0;outermost:for (var i = 0; i < 10; i++){ for (var j = 0; j < 10; j++){ if (i == 5 && j == 5){ break outermost; } num++; }}alert(num); // 55
在上面的代码中,如果每个循环正常执行到结束,num的值为100。但是,添加了这个标签就导致break语句不仅退出了内部循环,也退出了外部循环。
3)continue语句
continue;continue labelname;
- 只能在循环体内使用。
- 不是退出循环,而是转而执行下一次循环。
var num = 0;outermost:for (var i = 0; i < 10; i++){ for (var j = 0; j < 10; j++){ if (i == 5 && j == 5){ continue outermost; } num++; }}alert(num); // 95
在上述中,continue语句会强制继续执行循环,即退出内部循环,执行外部循环。
4)return语句
return expression; //expression可带可不带
只能在函数体内出现。
5)throw语句:抛出异常。
throw expression;
6)try/catch/finally语句
try { //通常来讲,这里的代码会从头执行到尾而不会产生任何问题, //但有时会抛出一个异常,要么是由throw语句直接抛出异常, //要么是通过调用一个方法间接抛出异常}catch(e) { //当且仅当try语句块抛出了异常,才会执行这里的代码 //这里可以通过局部变量e来获得对Error对象或者抛出的其他值的引用, //这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常, //还可以通过throw语句重新抛出异常}finally { //不管try语句是否抛出了异常,这里的逻辑总是会执行,终止try语句块的方式有: //1)正常终止,执行完语句块的最后一条语句 //2)通过break、continue或return语句终止 //3)抛出一个异常,异常被catch从句捕获 //4)抛出一个异常,异常未被捕获,继续向上传播}
7、with语句
- 将代码的作用域设置到一个特定的对象中。
- 定义with语句的目的是为了简化多次编写同一个对象的工作。
with (expression){ //将expression添加到作用域链的头部 statement; //然后执行statement,最后把作用域链恢复到原始状态。}
举个例子来说明。
var qs = location.search.substring(1);var hostName = location.hostname;var url = location.href;
上面的代码中都包含location对象。下面使用with语句改写。
with(location){ var qs = search.substring(1); var hostName = hostname; var url = href;}
- 严格模式下不允许使用with语句,否则将视为语法错误。
- 大量使用with语句会导致性能下降,所以不推荐使用。
8、debugger语句
通常什么也不做。但是,当调试程序可用并运行的时候,JavaScript解释器将会以调试模式运行。实际上,这条语句用来产生一个断点。
9、“use strict”
- 是一条指令。
- 在顶层代码使用这个指令,就说明后续的代码将会解析为严格代码。
- JavaScript基本概念(四)
- JavaScript基本概念(四)
- JavaScript基本概念(四)
- JavaScript基本概念(一)
- JavaScript基本概念(二)
- JavaScript基本概念(一)
- JavaScript基本概念(二)
- JavaScript基本概念(三)
- JavaScript基本概念(一)
- JavaScript基本概念(二)
- JavaScript基本概念(三)
- JavaScript基本概念(一)
- JavaScript基本概念(二)
- JavaScript基本概念(三)
- JavaScript基本概念(五)
- JavaScript基本概念(笔记)
- 四、运算符(基本概念)
- javascript 第一日(基本概念)
- SendMessage
- WPS 导航窗口 文档结构图
- MacBook怎么显示隐藏文件
- 自动属性,匿名类,对象初始化器。集合初始化器,lambda表达式
- HTML中<pre>标签介绍
- JavaScript基本概念(四)
- 《neural network and deep learning》题解——ch02 反向传播
- 单例模式
- 451两两交换链表中的节点
- wanquanfugai
- 两个费用的贪心(HDOJ 4864)
- 获取屏幕分辨率和宽高
- 从编译过程看内部类和lambda表达式
- Bootstrap前端框架