javascript - js数组当中的length问题

查看:386
本文介绍了javascript - js数组当中的length问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如下代码

        let arr = [1,2,3,4];
        arr[name] = "aaa";
        console.log(arr[length]); //1
        console.log(arr.length); //4
        console.log(arr[""]); //aaa

Array的原型里length属性默认为0,所以在arr里面是找不到length这个属性所以才到原型里去找,
那么这个点语法和方括号法又有什么区别呢?用了点语法之后是进行运算了吗。。
数组既然是个对象,那么为什么我给数组添加一个name属性显示出来的key为空?
搞不清数组和对象的本质区别了- -

解决方案

首先arr[length]不是你说的Array的原型里的length属性默认为0,从而得到arr[0] = 1.
原因是length变量在之前的代码中未定义,然后作用域链里找上了window对象,而window.length = 0;
所以得到arr[length] = arr[0] = 1;

其次arr[name] = 'aaa';你也没有往arr上添加name属性,中括号内的东西会当变量运算,然后再转化成string。这里同length一样在之前的代码里没有出现,从作用域链又找上了window对象,而window.name = '';
所以arr[name] = arr[''] = 'aaa'; 你往arr上添加了一个空字符串为key的属性。
所以最后你用arr['']时能得到'aaa';

这篇关于javascript - js数组当中的length问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆