var a = ['li', 'hao'];
var b = {
    0: 'li',
    1: 'hao',
}
请问,更推荐哪种写法?以及为啥?
     1 
                    
                    cctv1005s927      2018-04-11 20:39:49 +08:00 
                    
                    如果你要表达的是数组,毫无疑问是第一种。 
                原因: 1,代码表达的是作者的意思,既然要表达数组,那就应该用数组 2,既然要表达的是数组,那么使用数组后能够使用 Array 的原生方法,这样既不需要去引用第三方库,降低学习成本,又能增加程序的可读性。  | 
            
     2 
                    
                    cctv1005s927      2018-04-11 20:40:15 +08:00 
                    
                    实在不知道这种写法是哪里学来的... 
                 | 
            
     3 
                    
                    murmur      2018-04-11 20:44:02 +08:00 
                    
                    第二种写法是讲鸭式判别的练习题? 
                 | 
            
     4 
                    
                    des      2018-04-11 20:44:30 +08:00 via Android 
                    
                    @cctv1005s927 估计是最好的语言吧 
                 | 
            
     5 
                    
                    crs0910      2018-04-11 20:45:10 +08:00 via Android 
                    
                    数组有序 object 是无序的 
                 | 
            
     6 
                    
                    rabbbit      2018-04-11 20:45:50 +08:00 
                    
                    写法 b 有啥好处吗? 
                要插入一个数,a 直接就插了 a.splice(1,0,'lll'), b 咋办  | 
            
     7 
                    
                    crs0910      2018-04-11 20:46:08 +08:00 via Android 
                    
                    还有 你的问题问的不清不楚的 
                 | 
            
     8 
                    
                    leslie000666   OP @cctv1005s927 哦?那你觉得应该怎么写? 
                 | 
            
     9 
                    
                    ETiV      2018-04-11 21:01:41 +08:00 via iPhone 
                    
                    没有上下文的情况下无法判断哪种更好 
                 | 
            
     10 
                    
                    leslie000666   OP @crs0910 写法更好的含义包括,语义,语法规范,数量量够大时的性能等 
                 | 
            
     11 
                    
                    Cbdy      2018-04-11 21:14:20 +08:00 
                    
                    使用第一种 
                 | 
            
     12 
                    
                    noe132      2018-04-11 21:19:35 +08:00    从性能上来分析 
                其实很多情况不需要考虑性能。如果不是做计算密集的处理,仅仅是浏览器客户端的执行,性能影响几乎可以忽略不计。 https://stackoverflow.com/questions/8423493/what-is-the-performance-of-objects-arrays-in-javascript-specifically-for-googl 参考这篇文章,Array 的 push pop 大约是 Object 的 20 倍。 shift 虽比 pop 慢 6 倍,但仍然是 Object delete 效率的 100 倍。 从代码可读性角度上看,Array 字面量足够清晰。写法 2 过于冗余。 从数据结构上来看,Array 继承 Array.prototype 的一系列方法,并且 Array 的元素 index 和 length 都是动态的,写法 2 并没有 从语法规范,你这两种写法都是正确的,你怎么开心怎么写。 实际情况呢? 除非 index 是固定值的情况,如 key 为 number 的某哈希散列,不太可能有机会用到第二种形式。 因为 array 会继承 Array 的方法,Object 类型没有响应的操作,如果需要进行响应的操作写法会很不方便。 当然,如果你要自己实现一个用 Object 来实现的类 Array 对象也没有问题。 有时候有些确实会钻进牛角尖,比如这个例子。很多时候总是在想是这样好还是那样好,想了半天结果代码没写多少。实际上,当你不知道哪一种写法好的时候,选一种你觉得还可以的写法写下去就行了。遇到了不方便、不好用、不适合的情况自然就有答案,各种选择的优劣何在了。  | 
            
     13 
                    
                    crs0910      2018-04-11 21:19:49 +08:00 via Android 
                    
                    如果你要的是数组,那就只有第一种。 
                 | 
            
     14 
                    
                    leslie000666   OP @noe132 👍靠谱 
                 | 
            
     15 
                    
                    k9982874      2018-04-11 22:12:05 +08:00 via iPad 
                    
                    哈希表和链表的区别 
                 | 
            
     16 
                    
                    LeungJZ      2018-04-11 22:55:00 +08:00 
                    
                    如果表达是个数组,那就用第一种。 
                如果表达是个对象,那就用第二种。 因为很多时候,我都会用对象缓存某些数据,以数据的 id 为键值,因为这么取数据比较方便。  | 
            
     17 
                    
                    zhwithsweet      2018-04-11 23:10:55 +08:00 via iPhone 
                    
                    难道不是 a['0']a ? 
                 | 
            
     18 
                    
                    zhwithsweet      2018-04-11 23:11:21 +08:00 via iPhone 
                    
                    key 是字符串吧? 
                 | 
            
     19 
                    
                    bhaltair      2018-04-11 23:43:49 +08:00 
                    
                    var b = { 
                0: 'li', 1: 'hao', length: 2 } Array.from(b)  | 
            
     20 
                    
                    Leigg      2018-04-12 09:02:49 +08:00 via Android 
                    
                    对象的 key 又是一个字符串 
                 | 
            
     21 
                    
                    codehz      2018-04-12 09:32:15 +08:00 
                    
                    @zhwithsweet #18 JS 的 key 可以是字符串也可以是整数,甚至还可以是标识(Symbol) 
                 | 
            
     22 
                    
                    faceRollingKB      2018-04-12 14:43:01 +08:00 
                    
                    第一种写法是数组,第二种写法是字典,各有各的用途,取决于你的设计 
                 |