Javascript核心读书有感之语句(8)


            for (var count = 0; count < 10; count++)
            console.log(count)

当然,有些循环更加复杂,而且循环中一次迭代多个变量。在javascript,这种情况必须用到逗号运算符,它将初始化表达式和自增表达式合并入一个表达式中以用于for循环。

复制代码 代码如下:


            var i, j;
            for (i = 0, j = 10; i < 10; i++, j--)
                console.log(i * j);

到目前为止,在示例代码中的循环变量都是数字。当然是数字是最常用的,但不是必须的。下面这段代码就使用for循环来遍历表数据结果,并返回链表中最后一个对象(也就是第一个不包含next属性的对象)

复制代码 代码如下:


            function tail(o) { //返回链表的最后一个节点对象
                for (; o.next; o = o.next) /*empty*/ //根据判断o.next是不是真值来执行遍历
                    return o;
            }

需要注意的是,这段代码不包含initialize表达式,for循环中的那三个表达式中的人和一个都可以忽略,但两个分号必不可少。如果省略test表达式,那么将是一个死循环。同样和while(ture)类型,死循环的令一种写法是for(;;)。

iiii.for/in

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

复制代码 代码如下:


            for (variable in object)
                statement

variable通常是一个变量名,也可以是一个可以产生左值的表达式或者一个通过var语句声明的变量。总之是一个适用于赋值表达式左侧的值。object是一个表达式,这个表达式的计算结果是一个对象。同样,statement是一个语句或语句块,它构成了循环的主体。

使用for循环来遍历数组元素是非常简单的

复制代码 代码如下:


            var a = [1, 3, 5, "44"];
            for (var i = 0; i < a.length; i++) //i代表了数组元素的索引
                console.log(a[i]) //输出每个数组的元素

而for/in循环则是用来方便的遍历对象成员属性

复制代码 代码如下:


            for (var p in o) //将属性的名字赋值给变量p
                console.log(o[p]); //输出每一个属性的值

在执行 for/in语句的过程中,javascript解释器首先计算object表达式。如果表达式为null或undefined,javascript解释器将跳过循环并执行后续的代码。如果表达式等于一个原始值,这个原始值将会转换为与之对于的包装对象(wapper object)(3.6节)。否则,expression本身已经是对象了。javascript会依次枚举对象的属性来执行循环。然而在每次循环之前,javascript都会计算variable表达式的值,并将属性名(一个字符串)赋值给它。

需要注意的是,只要for/in循环中,varibale的值可以当做赋值表达式的左值,它可以是任意表达式。每次循环都会计算这个表达式,也就是说每次循环它计算的值可能不同。例如,可以使用下面的这段代码将所有对象属性复制到一个数组中:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgffjf.html