《javascript权威指南》读书笔记(3)—语句
来源:互联网 发布:sql like 下划线 编辑:程序博客网 时间:2024/06/05 07:43
表达式语句
如
counter++;delete o.x;alert(greeting);window.close();Math.cos(x);
复合语句和空语句
许多条语句联合在一起
{ x=Math.PI; cs=Math.cos(x); console.log("cos(pi)="+cx);}
声明语句
var
声明一个或多个变量,如:
var i;var j=0;var p,q;
- 如果var出现在函数体内,它定义的是一个局部变量,其作用于就是这个函数
- var语句中的变量没有指定初始化表达式,那么这个变量的初始值为undefined
function
两种定义写法:
var f=function(x){return x+1;}//函数定义表达式function f(x){return x+1;} //函数声明语句
- 函数声明语句常出现在javascript代码的顶层,也可以嵌套,但在嵌套时,只能出现在所嵌套函数的顶部
- 函数声明语句中的函数名是一个变量名,和通过var声明变量一样,函数定义语句中的函数被“显式”地提前了。使用var的话,只有变量声明提前了
- 函数声明语句创建的变量是无法删除的
条件语句
if
if(username==null)username="John Doe";
- if和else采用就近匹配的原则
switch
swich(exp){ case 1: break; case 2: break; case 3: break; default: break;}
- 允许case关键字跟任意的表达式
- 避免使用带有副作用的case
- switch语句首先计算switch关键字后的表达式,对于每个case实际上执行的是“===”,因此表达式和case的匹配不会做任何类型转换
循环语句
while
do/while
for
for/in
for(variable in object)statement;
如果object表达式等于一个原始值,会转换成与之对应的包装对象。js会依次枚举对象的属性来循环,然而在每次循环之前,js都会先计算variable表达式的值,并将属性名赋值给它
需要注意的是,只要for/in循环中variable的值可以当做赋值表达式的左值,它可以是任意表达式,每次循环都会计算这个表达式,如
var o={x:1,y:2,z:3};var a=[],i=0;for(a[i++]in o);
数组是特殊的对象,枚举数组索引
for(i in a) console.log(i);
for/in循环并不会遍历对象的所有属性,只有“可枚举”的属性才会遍历到
枚举的顺序 是按属性定义的先后顺序
如果对象的“原型链”上有多个对象,那么链上的每个原型对象的属性的遍历也是按特定顺序执行的,js的一些实现依照数字顺序来枚举数组属性,而不是某种特定的顺序。但当数组元素的索引是非数字或是稀疏数组时,按照特定顺序枚举
跳转
标签语句
由语句前的标识符和冒号组成:
identifer:statement
break和continue是js中唯一可以使用标签的语句。
mainloop:while(token!=null){ continue mainloop;}
identifer必须是一个合法的标识符,不能是保留字,任何语句都可以有很多个标签
break语句
后面可以跟语句标签,在break和语句标签之间不能换行,break无法越过函数边界。
continue语句
只能在循环体里运行
在while循环中,在循环开始处指定的expression会重复检验,如果检验结果为true,循环体会从头开始执行
在do/while循环中,程序的执行直接跳到函数结尾处,这时会重新判断循环条件,之后才会继续下一次循环
在for循环中,首先计算自增表达式,然后再检测test表达式,用以判断是否执行循环体
在for/in循环中,循环开始遍历下一个属性名,这个属性名赋给了指定的变量
由于continue在两种循环中的行为表现不同,因此使用while循环不可能完美的模拟for循环
return语句
函数终止执行,没有表达式返回undefined
分支主题
throw语句
throw expression;
throw显式地抛出错误
expression的值是可以任意的,可以抛出一个代表错误码的数字,或者包含可读的错误信息的字符串。当javascript解释器抛出异常的时候通常采用error类型和其子类型。一个error对象有一个name属性表示错误类型,一个massage属性用来存放传递给构造函数的字符串
function factorial(x){ if(x<0) throw new Error("x不能是负数"); for(var f=1;x>1;f*=x;x--); return f;}
当抛出异常时,js会立即停止当前正在执行的逻辑,并跳转至就近的异常处理程序。异常处理程序是用try/catch/finally语句的catch从句编写的。如果抛出异常的代码没有一条相关联的catch从句,解释器会检查更高层的闭合代码块,看他是否有相关联的异常处理程序。以此类推,直到找到一个异常处理程序位置。如果没有找到,js会把异常当做程序错误处理,并报告给用户
try/catch/finally语句
try定义异常所在的代码块,catch从句跟随在try从句之后,当try块内某处发生了异常时,调用catch内代码逻辑。catch从句跟随finally块,后者放置清理代码
try{}catch(e){//catch中的参数是和异常相关的值(比如error对象)。//和普通的变量不同,catch语句中的标识符具有块级作用域//只在catch语句中有定义}finally{//用于清理//如果使用了return,continue,break忽略}
其他语句类型
with语句
with(object)statement
将object添加到作用域链的头部,然后执行statement,最后把作用域链恢复到原始状态
尽可能不要使用with语句
对象嵌套很深的时候可以使用with将form对象添加至作用域链的顶层
document.forms[0].address.value;with(document.forms[0]){ name.value=""; address.value=""; email.value="";}
with语句并不能创建属性
debugger语句
用来产生一个断点
- 《javascript权威指南》读书笔记(3)—语句
- JavaScript权威指南-读书笔记3
- JavaScript权威指南-读书笔记3
- 读书笔记 —《JavaScript权威指南》
- 《JavaScript权威指南》读书笔记
- javascript权威指南读书笔记
- 《JavaScript权威指南》 -- 读书笔记
- javascript权威指南--读书笔记
- JavaScript权威指南读书笔记—— 模块
- 《JavaScript权威指南(第六版)》读书笔记 (五) 语句
- JavaScript权威指南》读书笔记【转】
- JavaScript权威指南-读书笔记1
- JavaScript权威指南-读书笔记2
- JavaScript权威指南--Chapter5 语句
- JavaScript权威指南读书笔记——JavaScript的扩展
- JavaScript权威指南读书笔记——第六章 对象
- JavaScript权威指南读书笔记——第七章 数组
- JavaScript权威指南读书笔记——第八章 函数
- CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- Eclipse 快捷键
- MPMoviePlayerController ---itemFailedToPlayToEnd
- 扔了一晚上的鸡蛋,找出来了第一次扔鸡蛋的最佳地点
- php中关于mysqli和mysql区别的一些知识点分析
- 《javascript权威指南》读书笔记(3)—语句
- 十一、Unity4.6UI---------------InputField
- Handler 参考
- 横竖屏+VersionCode+VersionName+全屏显示
- OD提示 "为了执行系统不支持的动作, OllyICE 在这个被调试的程序中注入了一点代码, 但是经过5秒仍未收到响应..." 解决办法
- IOS6内存警告处理
- Java 标识符
- CentOS下编译安装tesseract-ocr
- HDU 3709 Balanced Number(数位DP)