在js取值的时候, 这种现象叫什么, 如何解释呢?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>test js</title>

</head>

<body>

<h1>JS Test</h1>


<script>

    var arr = [

        'Dell',

        'HP',

        'Apple',

        'Acer'

    ];


    var map = {

        0: 'DELL',

        1: 'HP',

        2: 'APPLE',

        3: 'ACER'

    };


    console.log(arr[1]);// HP

    console.log(map[1]);// HP


    console.log(arr[01]);// HP

    console.log(map[01]);// HP


    console.log(arr['1']);// HP

    console.log(map['1']);// HP


    console.log(arr['01']);// undefined

    console.log(map['01']);// undefined


</script>

</body>

</html>


凤凰求蛊
浏览 510回答 1
1回答

慕村9548890

所有索引都是字符串,所有数组都是对象,数组不过只是比较特殊的对象而已所有用&nbsp;a[i]&nbsp;访问的&nbsp;a&nbsp;的时候 会计算&nbsp;i&nbsp;的值并转换为字符串计算&nbsp;a[01]&nbsp;的时候 先计算了&nbsp;01&nbsp;的值,在非严格模式下&nbsp;01&nbsp;是数&nbsp;1&nbsp;的八进制表示即&nbsp;01 == 1&nbsp;所以&nbsp;a[01] == a[1]计算完 i 的值之后把它转为字符串a[1] === a["1"]因为&nbsp;"1" != "01"所以&nbsp;a["1"] != a["01"]关于数组和对象的索引之间的关系:数组的&nbsp;index&nbsp;是 从&nbsp;0&nbsp;到&nbsp;2^64-2&nbsp;之间的整数&nbsp;key(最后也转为字符串)数组的&nbsp;length&nbsp;值至少比数组中最大的&nbsp;index&nbsp;值大&nbsp;1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript