• 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中的关联数组用对象取代。

  • 相关阅读:
    第六阶段·数据库MySQL及NoSQL实践第1章·章节一MySQL数据库
    小象和老鼠
    好句子啊
    LGTB 与 序列
    最小环
    精灵魔法
    C#委托之我见
    MySQL——优化ORDER BY语句
    MySQL——索引实现原理
    是什么影响了数据库索引选型?
  • 原文地址:https://www.cnblogs.com/feng524822/p/3449046.html
Copyright © 2020-2023  润新知