zoukankan      html  css  js  c++  java
  • js数组的误解

      js数组实际是个残废货,没有关联数组这一说,要实现真正意义上的关联数组只能用对象,那你肯定不服气了,说怎么没有关联数组,我来给你写一个:

    var arr = [];
    arr['a'] = 1;
    arr['b'] = 'ss';
    

      好像有那么点关联数组的意思,但是。。。你输出一下arr.length看看吧,结果并非你所预料的2,而是0。其实也并没有什么好惊讶的,Js中一切源于对象,数组也从对象继承而来,当你用arr['a']=1来给数组添加元素的时候,实际上是在给数组对象添加属性,有点绕是么??那看一段代码:

    var fn = function () {};
    fn['a'] = 1;
    fn['a'] = 'ss';
    

    你回发现原来函数也可以拿来当数组用啊,不只是数组和函数,只要是对象都可以,只不过是存储在对象上的属性而非严格意义的数组。归根到底,还是这段代码

    var o = new Object();
    o['a'] = 1;
    o['b'] = 'ss';
    

      1、声明变量,

      2、给变量添加属性

    有点啰嗦了,再来个诡异点的:

    var arr = [];
    arr[1] = 10;
    arr[100] = true;
    alert(arr.length);
    

    骚年,凌乱了吧。。。你会发现length = 键名最大值+1

    这段代码和上面一样

    var arr = [];
    arr['1'] = 10;
    arr['100'] = true;
    alert(arr.length);
    

      

    来段总结性的话:不要试图在js中使用关联数组,尤其不要试图用数值类型的键名。js中的关联数组用对象取代。

  • 相关阅读:
    struts2的核心和工作原理
    JAVA NIO学习笔记1
    [深入JUnit] 测试运行的入口
    阿里巴巴最新开源项目
    数据库进阶之路(五)
    flutter 常用plugins
    小程序 自定义组件 并实现组件间通讯
    小程序 背景叠阴影
    小程序 navigateTo传对象参数
    小程序 解决同行cell中 多点击事件冲突
  • 原文地址:https://www.cnblogs.com/feng524822/p/3449046.html
Copyright © 2011-2022 走看看