前端知识点---数组的补充知识之数组的索引(javascript)

数组是一种特殊的对象

  • 数组是一种特殊的对象 , 访问数组元素的方括号和访问对象属性的方括号是类似的
  • javascript会把类型为数值的索引转换成字符串, 即索引数值1, 会转换成字符串"1", 再将这个字符串转换成属性名 , 这个从数值到字符串的转换没有什么特别的, 使用普通字符串也可以
let o={}//创建一个普通对象
o[1]="one"//通过整数索引一个值
o["1"]//=>"one" , 数值和字符串的属性名是同一个

明确索引的范围

  • 需要注意的是 , 必须明确区分索引和对象的属性名 .所有的索引都是属性名, 但是只有介于0和2^32-2之间才是索引
  • 全部的数组都是对象, 可以在数组上以任意名字创建属性 , 可以在数组上以任意名字创建属性, 但是如果属性是数组索引, 数组会有特殊的行为 ,就是自动按需更新其length属性
  • 可以用负数或者是非整数值来索引数组, 此时数值会转换成字符串 , 这个字符串会作为属性名 .
  • 因为这个名字是非负整数 , 所以会被当成常规的对象属性, 而不是数组索引
  • 如果使用非负整数的字符串来索引数字, 那这个值会成为数组索引, 而不是对象属性 .
  • 如果用了和整数数值上相等的浮点数也是如此
a[1.000]=1//相当于a[1]=1
a[-1.23]=true//会创建一个为-1.23的属性名
a["1000"]//这是数组中的第1001个元素                                                                             

javascript中的数组没有所谓的"越界"

  • 这是因为数组索引其实就是一种特殊的对象属性 , 所以javascript数组没有所谓的"越界"错误
  • 查询任和对象中不存在的属性都不会导致错误, 只会返回undefined , 数组作为一种特殊的对象也是如此
    示例:
let a=[true, false];
a[2];//undefined
a[-1];//undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值