原文http://pij.robinqu.me/

for/in语句也使用for关键字,但它是和常规的for循环完全不同的一类循环。语法:

for (variable in object)
statement

variable通常是一个变量的名,也可以使一个可以产生左值的表达式或一个通过var语句声明的变量,object是一个表达式,这个表达式计算的结果是一个对象。for/in 循环用来方便的遍历对象属性成员:

for(var p in o ) {
console.log(o[p]);
}

for/in循环并不会遍历对象所有属性,只有“可枚举”的属性才会遍历到。由JavaScript语言核心所定义的内置方法就不是“可枚举的”,例如所有对象都有方法toString().

跳转

JavaScript中另一类语句是跳转语句。

例如

break语句是跳转到循环或者其他语句的结束。

continue语句是终止本次循环的执行并开始下一次循环的执行。JavaScript中的语句可以命名或带有标签,break和continue可以标识目标循环或者其他语句标签。

return语句让解释器跳出函数体的执行, 并提供本次调用的返回值。

throw语句触法或者”抛出”一个异常,他是与try/catch/finally语句一通使用的。

语句是可以添加标签的,标签是由语句前的标识符和冒号组成:

identifier: statement

JavaScript中允许break关键字后面跟随一个语句标签:

break labelname;

当break和标签一块使用时,程序将跳转到这个标签所标识的语句块的结束,或者直接终止这个闭合语句块的执行。 如果没有这个闭合语句块,就会产生一个语法错误。

单独使用break语句的作用是立即退出最内层的循环或switch语句。如果希望通过break来跳出非就近的循环体或者switch语句时,就会用到带标签的break语句.

continue语句和break语句非常类似,但它不是退出循环, 而是转而执行下一次循环。

函数中的return语句既是指定函数调用后的返回值。

return expression;

return语句只能出现在函数体内。如果没有return语句,调用表达式的结果是undefined

JavaScript中,当产生运行时错误或者程序使用throw语句时就会显示地抛出异常。使用try/catch/finally语句可以捕获异常,

throw语句的语法:

throw expression;

expression的值可以是任意类型的。JavaScript解释器抛出的异常的时候通常采用Error类型和其子类型,例如:

function factorial(x) {
if(x < 0) throw new Error("x不能是负数");
for(var f = 1; x > 1; f *= x, x--);
return f;
}

Error中有几个比较重要的属性 比如name 错误的名称 message 错误的信息 stack 错误发生时调用堆栈。

常见的几种Error类型:

SyntaxError: 语法错误,无法通过解释器
RangeError: 数值超出范围
TypeError: 变量的类型不是预期的
ReferenceError: 引用不可用

当抛出异常时, JavaScript解释器会立即停止当前正在执行的逻辑,并跳转到就近的异常处理程序。异常处理程序是用try/catch/finally语句的catch从句编写的。

try/catch/finally语句是JavaScript的异常处理机制。

其中try从句定义了需要处理的异常所在的代码块。

catch从句跟随在try从句之后, 当try块内某处发生了异常时,调用catch内的代码逻辑。

catch从句后跟随finally快,后者中放置清理代码。不管try块中是否产生异常,finally块内的逻辑总是会执行。

其他语句

这里讨论三种JavaScript语句 with, debugger和 use strict

with语句用于临时扩展作用域链,语法:

with (object)
statement

这条语句将object添加到作用域链的头部,然后执行statement,最后把作用域链恢复到原始状态。

通常情况不推荐使用with语句。一般可以使用with语句来简化代码编写。例如:

with(document.forms[0]) {
name.value = "";
address.value = "";
email.value = "";
}

debugger语句,用来产生一个断点,代码的执行会停在断点的位置,这时使用调试器来输出变量的值。

javascript基础(四)语句的更多相关文章

  1. JavaScript基础四

    1.13 Js中的面向对象 1.13.1 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或 ...

  2. javascript基础知识-语句

    关于javascript语句,有下面一些有趣的用法. 1.空语句的使用: 空语句只包含一个";",那在什么时候可以使用呢? 例: //初始化一个数组a for(i = 0;i &l ...

  3. JavaScript 基础(四) 循环

    JavaScript的循环有两种,一种是for 循环,通过初始条件,结束条件和递增条件来循环执行语句块: var x = 0; var i; for(i=1; i <=10000; i++){ ...

  4. Javascript基础四(数组,字符,对象,日期)

    第一节:数组 1.数组的概念及定义     可以存放一组数据:          当需要操作多个数据时: 2.数组的创建方式 var arr1 = [1,2,3]; //字面量方式 var arr2 ...

  5. JavaScript 基础四

    遍历对象的属性 for...in 语句用于对数组或者对象的属性进行循环操作. for (变量 in 对象名字) { 在此执行代码 } 这个变量是自定义 符合命名规范 但是一般我们 都写为 k 或则 k ...

  6. JavaScript 基础(四) - HTML DOM Event

    HTML DOM Event(事件) HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript.下 ...

  7. JavaScript基础语句

    一.前言: 有过学习其他语言的经历,会比较好上手.但是,没有学过也无关大雅.只要认真学,都会学好.毕竟,都只是一些基础的语句.关键在于要会运用. 掌握好语句的嵌套,以及要的逻辑思维能力,就已经成功一大 ...

  8. 前端(十二)—— JavaScript基础操作:if语句、for循环、while循环、for...in、for...of、异常处理、函数、事件、JS选择器、JS操作页面样式

    JavaScript基础操作 一.分支结构 1.if语句 if 基础语法 if (条件表达式) { 代码块; } // 当条件表达式结果为true,会执行代码块:反之不执行 // 条件表达式可以为普通 ...

  9. javascript基础入门之js中的结构分支与循环语句

    javascript基础入门之js中的结构分支与循环语句 程序的结构①顺序结构:自上而下:②选择(分支)结构:多条路径,根据不同的条件,只执行其中一个:③循环结构:重复某些代码④配合特定的语句实现选择 ...

随机推荐

  1. [转]numpy中的matrix矩阵处理

    今天看文档发现numpy并不推荐使用matrix类型.主要是因为array才是numpy的标准类型,并且基本上各种函数都有队array类型的处理,而matrix只是一部分支持而已. 这个转载还是先放着 ...

  2. SQL总结之增删改查

      SQL语句增删改查(总结) 一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:ins ...

  3. could not resolve property问题(ssh框架)

    could not resolve property不能解析属性问题, 刚开始把hql语句中的"from User user where user.user_name = '"+u ...

  4. Python学习笔记——基础篇1【第三周】——set集合

    set集合 不允许重复的元素出现(相当于特殊的列表) set 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 练习:寻找差异 # 数据库中原有 old_dic ...

  5. cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用

    convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中. //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系. //当然大多数情况会用CCMen ...

  6. HUD 1171 Big Event in HDU(01背包)

    Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...

  7. SAP HANA中创建层次分析视图(Hierarchy Analytic View)

    1. 创建层次Attribute View: ATTR_PRODUCT_HIERACHY ref:  http://www.cnblogs.com/omygod/archive/2013/04/30/ ...

  8. ASP.NET使用ImageMap控件

    文章来自:http://www.baike369.com/content/?id=5773

  9. 朗姆达表达式类似IN查询条件

    if (list.Contains("全部"))            {                model.All = true;            }        ...

  10. how to make a git repo un-git?

    If you have a git repo and now you want to make it a plain filesystem tree .. (removing the git trac ...