语句 |
定义 |
JS中的整句或命令,用来执行以使某件事件发生 |
主要内容 |
1. 结尾 Js中语句以分号(;)结尾; 2. 执行方式 默认情况下,JS解释器按照语句的编写顺序依次执行;但可通过控制语句改变执行次序; 3. 作用域 JS中没有块级作用域,在语句块中的声明的变量并不是语句块私有的。JS中变量作用域为函数作级的,即只在对应的函数内有定义且局部变量优先级高于全局变量。 4. 声明语句 JS中用var来声明变量,function来声明函数。函数声明语句通常出现在JS的最顶层,也可以嵌套在其他函数体内,但嵌套时函数声明只能出现在所嵌套函数的顶部。 5. 控制语句 控制语句有if/else 、for、while、do/while等用法基本与JAVA、C相似。 6. 其他语句 with语句 严格形式下不容许使用且难以进行代码优化,在开发中最好不使用。 debugger语句 用语调试 “use strict” 用语设定是否严格模式 7. 异常处理 异常是当发生了某种异常情况或错误时产生的一个信号。抛出异常通知发生了,就是用信号通知发生了错误或异常状况。捕获异常时指处理这个信号,即采取必要的手段从异常中恢复。在JS中,当产生运行错误或者程序使用throw语句时就会显示地抛出异常。使用try/catch/finally语句可以捕获异常。 throw语句的语法如下: throw expression expression的值可以是任意类型的。可以抛出一个代表错误码的数字,或包含可读的错误消息的字符串。当JS解释器抛出异常的时候通常采用error类型和其子类型。一个error对象有一个name属性表示错误类型,一个message属性用来存放传递给构造函数的字符串。 try/catch/finally语句使JS得异常处理机制。其中try从句定义了需要处理的异常所在的代码块。catch从句跟随在try从句之后,当try块内某处发生了异常时,调用catch内的代码逻辑。catch从句后跟随finally从句,finally中放置清理代码,不管try块中是否产生异常,finally块内的逻辑总会执行。try从句至少与catch、finally中的一个组合才能使用。try、catch、finally语句块都需要使用花括号,即使一条语句也需要。 try{ //通常来说,这里的代码会从头执行到尾而不产生任何问题 //但是有时会抛出一个异常,要么由throw语句直接抛出异常 //要么是通过调用一个方法间接抛出异常 }catch(e){ //当且仅当try语句块抛出了异常,才会执行这里的代码 //这里可以通过局部变量e来获得对error对象或抛出的其他值得引用 //这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常 //还可以通过throw语句重新抛出异常 }finally{ //不管try语句块是否抛出了异常,这里的逻辑总会执行,终止try语句块的方式有: //正常终止,执行完语句块的最后一条语句 //通过break、continue或return语句终止 //抛出一个异常,异常被catch从句捕获 //抛出一个异常,异常未被捕获继续向上传播 } |
finally拾遗 |
1. 不管try语句块中代码执行完成了多少,只要try语句中有一部分代码执行了,finally从句就会执行。它通常在try从句的代码后用于清理工作。 2. 当由于return、continue、break语句使得解释器跳出try语句块时,解释器在执行新代码之前先执行finally块中的逻辑。 3. 如果在try中产生了异常,而且存在一条与之相关的catch从句来处理这个异常,解释器首先会执行catch中的逻辑,然后执行finally中的逻辑。如果不存在处理异常的局部catch从句,解释器会首先执行finally中的逻辑,然后向上传播这个异常,直到找到能处理这个异常的catch从句。 4. 如果finally块中使用了return、continue、break、或者throw语句使程序发生跳转、或者通过调用了抛出异常的方法改变了程序执行流程,不管这个跳转使程序挂起还是继续执行,解释器都会将其忽略 5. 在没有catch从句的情况下try从句可以和finally从句一起使用。在这种情况下finally块只包含清理代码,不管try块中是否有break、continue、return语句这里的代码一定会执行。 |