文档详情

ajax实用技术教学课件作者程继洪肖川李海斌编著第4章javascript基础4.7.pptx

发布:2019-10-07约3.15千字共23页下载文档
文本预览下载声明
4.7 其他语句 除了上述的控制结构外,还有一些其他结构在实际编程中应用的比较多,现分述如下。 4.7.1 异常处理 在程序运行中错误是不可避免的,那么如果程序中出现了错误该怎么办呢? 不用担心,JavaScript给我们提供了处理错误的方式,那就是try…catch语句。 它可以使程序即使发生了异常也可以优雅的结束。 try…catch语法结构如下: try { // 有可能触发异常的语句; } catch(err) { // 处理错误的语句 } finally { // 处理语句 } 图4-5 try…catch执行流程 执行流程: 首先,执行try中的语句,如果发生错误,则执行catch中的语句处理错误,处理完成后再执行finally中的语句;如果没有发生错误,则执行finally中的语句。 可见无论是否发生错误,都会执行finally中的语句,所以可以在finally中编写清理工作的代码,比如释放申请的资源等。 执行流程如图4-5所示。 除了JavaScript抛出的异常外,我们也可以根据情况自己抛出异常。 JavaScript提供了关键字throw,用于抛出异常。用法如下: throw 异常对象; 这里的异常对象可以是String、数字、布尔值或对象。 不论是JavaScript抛出的异常,还是自己抛出的异常,都会引发错误处理。 但如果没有提供处理错误的try…catch语句,则会导致程序结束。 异常处理的实例见清单4-6。 4.7.2 with语句 说到with语句就不得不提到作用域链(scope chain)的概念,所谓作用域链就是指一系列对象,用于在其中查找要使用的变量或属性。 如果要使用变量x,则会在当前对象中查找,若找到则使用这个x;若找不到,则到上一层对象中进行查找,若还是查不到,则再到上一层对象中进行查找,直到顶层对象——即全局对象——如果还查不到,则说明变量x没有声明,触发ReferenceError异常。 with语句的作用就是暂时扩充这作用域链,用指定的对象充当上层的作用域对象,换句话说,就是如果找不到要使用的变量,则会到with指定的对象中查找该变量。 有点类似于Java的import语句,如果没有学习过Java就不要管这个import了,如果学习过,则可以加深对with语句的理解。 with语句的语法格式如下: with(对象名) { 语句; } with语句主要用在访问层次较深的变量的访问上,用于省略冗长的“对象名点”的书写。见清单4-6。 使用with必须注意以下几点: ◆ 在JavaScript严格模式(见4.8.3 use strict语句)下,不能使用with语句; ◆ 使用with语句的代码,JavaScript无法对其进行优化,运行效率低。 基于以上两点原因,尽量避免使用with语句,虽然(有时)它可以大幅减少代码量! 4.7.3 use strict语句 从ECMAScript 5开始引入了use strict,严格说来它并不是一条语句,而是一条指令。用于说明后面的代码运行于严格模式。语法如下: “use strict”; 需要注意的是,这里没有关键字,只是一个普通的字符串表达式,单引号和双引号都可以。 对于以前版本的JavaScript,不支持严格模式也没有问题,只是把它作为普通表达式求值,求值后也没有使用,不会影响其他程序。 可以使用以下方法测试JavaScript是否支持严格模式: var isStrict = (function(){“use strict”; return this === undefined;}()); 这里用到了内联函数,即声明加调用同时进行,有关函数的内容将在第5章介绍。 这里用到了严格模式的一条性质:在严格模式下,任何函数调用时,调用时都会有一个值为undefined的this。在非严格格式下,this的值为全局对象。 严格模式与非严格模式有以下区别: ◆ 严格模式下禁止使用with语句。 ◆ 严格模式下任意变量必须先声明后使用;非严格模式下未声明的变量当作全局变量。 ◆ 严格模式下函数调用时this的值为undefined,而非严格模式下值为全局对象。 ◆ 严格模式下对不可写的属性赋值,或不可扩展(继承)的对象添加新的属性,将抛出TypeError异常,而非严格模式则采取静默处理(即没有任何提示)。 ◆ 严格模式下,传递给eval()的代码不能声明变量和函数。 ◆ 严格模式下,对象中不能声明两个同名的属性。 ◆ 严格模式下,arguments对象持有实际参数的静态拷贝。而非严格模式下,数组和函数参数则指向同一个值。 ◆ 严格模式下,delete后的变量名(对
显示全部
相似文档