• javascript中的for in循环


    JavaScript中提供了两种方式迭代对象:

    (1)for 循环;

    (2)for..in循环;

    使用for循环进行迭代数组对象
    javascript提供了一种特殊的循环(也就是for .. in循环),用来迭代对象的属性或数组的每个元素,for...in循环中的循环计数器是字符串,而不是数字。它包含当前属性的名称或当前数组元素的索引。

    案例一:

    //使用for..in循环遍历对象属性

    var person={
        name: "Admin",
        age: 21,
        address:"shandong"
    };
    
    for(var i in person){
        console.log(i);   
    }
    View Code



    执行结果为:
    name
    age
    address
    当遍历一个对象的时候,变量 i 也就是循环计数器 为 对象的属性名

    //使用for..in循环遍历数组

    var array = ["admin","manager","db"]
    
    for(var i in array){
    
        console.log(i);
    
    }
    View Code




    执行结果:
    0
    1
    2
    当遍历一个数组的时候,变量 i 也就是循环计数器 为 当前数组元素的索引

    for in的语法结构

    for(variable in object)
        statement
    View Code

    variable通常是一个变量名,也可以是一个可以产生左值的表达式或者一个通过var语句声明的变量,总之必须是一个适用于赋值表达式左侧的值。object是一个表达式,这个表达式的计算结果是一个对象。

    执行for in语句的过程中,JS会先计算object表达式的值。

    如果object是一个对象,JS会依次枚举对象的属性来执行循环。在每次循环之前,JS会先计算variable表达式的值,并将属性名(一个字符串)赋值给它。

    如果表达式为null或者undefined,JS解释器会跳过循环并执行后续的代码。

    variable的值可以当做赋值表达式的左值,它可以是任意表达式,每次循环都会计算这个表达式。例如,可以使用下面这段代码将所有对象的属性复制到一个数组中。

    var p = {x:1, y:2, z:3};
    var a = [], i = 0;
    for(a[i++] in p) <!-- empty -->
    View Code

    在上面代码后插入

    for(i in a) console.log(i,a[i]);

    显示的结果为0 x,1 y, 2 z


    注意一:for in循环不会按照属性的下标来排列输出。http://www.cnblogs.com/rubylouvre/p/3396042.html  事实上,它不一定根据定义时的顺数输出,所有浏览器的最新版本现在都按chrome执行,先把当中的非负整数键提出来,排序好输出,然后将剩下的定义时的顺序输出。由于这个奇葩的设定,让avalon的ms-with对象排序不按预期输出了。只能强制用户不要以纯数字定义键名:

    注意二:for/in循环并不会遍历对象的所有属性,只有可枚举的属性才会遍历到。JS语言核心所定义的内置方法和很多内置对象的属性都是不可枚举的。而代码中定义的所有属性和方法都是可枚举的。对象可以继承其他对象的属性,那些继承的自定义属性也可以使用for/in枚举出来。

    努力但不功利~~!
  • 相关阅读:
    mybatis用mysql数据库自增主键,插入一条记录返回新增记录的自增主键ID
    spark-shell中往mysql数据库写数据报错
    SpringCloud学习笔记(8)分布式配置中心——config
    SpringCloud学习笔记(7)路由——Zuul
    docker学习
    SpringCloud学习笔记(4)负载均衡——Feign
    SpringCloud学习笔记(3)负载均衡——Ribbon
    SpringCloud学习笔记(2)注册中心——eureka
    SpringCloud学习笔记(1)Spring Cloud与Dubbo的对比
    linux搭建环境
  • 原文地址:https://www.cnblogs.com/langlang149/p/5823896.html
Copyright © 2020-2023  润新知