数组索引类型转换

本文解释了在JavaScript中如何使用字符串、对象和函数作为数组索引,它们会被自动转换为字符串形式,如obj转为[objectObject],function保持原样,导致输出结果分别为2和函数名本身。
摘要由CSDN通过智能技术生成

我们都知道数字可以作为数组的索引来使用,那如果我使用字符串,函数或者对象作为数组索引呢?

在这里插入图片描述
看到这段代码,我们可能会感到疑惑,我们使用字符串作为数组索引会出现问题吗?
这里我们就能引出,当我们使用数字,对象,函数等作为数组索引时,他会进行一个类型转换,会将这些都转换成一个字符串。

对象作为数组索引

let obj = { value: 1 }
let arr = []
arr[obj] = 2
console.log(arr["[object Object]"]);//2

上边我们将obj作为数组的索引来使用,那为什么我们输出arr[“[object Object]”]时会打印2呢?
我们可以输出一下obj.toString(),打印的结果就是[object Object],根据我们上面提到的对象作为索引时会转换成字符串,所以我们这里输出的值为2

函数作为数组索引

function foo() {}
let arr = []
arr[foo] = 2
console.log(arr[foo]);//2

这里同理,我们输出foo.toString()后发现,输出的就是foo本身,所以我们这里输出的是2

那么到这里开头的这道题就很简单了,输出的是3 3

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值