- 主题:很好奇javascript 对数组下标是怎么处理的
网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
那么 我这样
var a = 4/2; var b=8/4; var c = 2
arr[2], arr[a] 和 arr[b], arr[c] 是同一个东西吗?js 怎么知道我的下标是不是整数?
--
修改:fairfox FROM 203.208.61.*
FROM 203.208.61.*
当数字和字符串比较的时候,先尝试把字符串转成数字再比较吧。
这样当二者差值小于一个比较小的数的时候就认为就相等了
a[1]==a[0.99999999999999999999999999999999]
【 在 fairfox (fairfox) 的大作中提到: 】
: 网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
: a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
: 但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
: ...................
--
FROM 114.249.214.*
当然知道,没有整数类型不代表没有整数
【 在 fairfox (fairfox) 的大作中提到: 】
: 网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
: a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
: 但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
: ...................
--
FROM 101.224.90.*
a[1.0] 等效于 a[1]。
js对于引用属性访问全部都是统一的过程,访问a[i]时,先将a变成对象类型O,然后调用desc = O.GetProperty(i)。(GetProperty为对象的内部方法,返回PropertyDescriptor类型,不能通过编程调用)
1. 如果i未定义,则desc为undefined,结果为undefined
2. 如果desc的Value属性为true,返回desc的value
3. 如果desc的Get属性为true,调用desc的get方法并返回
4. 否则,如果O上有accessor,以i为参数调用accessor并返回
5. 否则,返回undefined
对于数组的length,符合上述的情形3,而a[1]符合上述的情形4
【 在 fairfox 的大作中提到: 】
: 网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
: a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
: 但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
: ...................
--
FROM 123.125.116.*
a[1]为什么不是 情形2呢?因为a是个数组因此也是个对象,这个对象有属性“1”,其【value】 attribute的值返回。这样理解对么?
=============================================
发信人: zli07 (Anonymous), 信区: WebDev
标 题: Re: 很好奇javascript 对数组下标是怎么处理的
发信站: 水木社区 (Thu Nov 1 13:25:59 2012), 站内
a[1.0] 等效于 a[1]。
js对于引用属性访问全部都是统一的过程,访问a[i]时,先将a变成对象类型O,然后调用desc = O.GetProperty(i)。(GetProperty为对象的内部方法,返回PropertyDescriptor类型,不能通过编程调用)
1. 如果i未定义,则desc为undefined,结果为undefined
2. 如果desc的Value属性为true,返回desc的value
3. 如果desc的Get属性为true,调用desc的get方法并返回
4. 否则,如果O上有accessor,以i为参数调用accessor并返回
5. 否则,返回undefined
对于数组的length,符合上述的情形3,而a[1]符合上述的情形4
【 在 fairfox 的大作中提到: 】
: 网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
: a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
: 但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
: ...................
--
FROM 59.175.226.*
嗯,a的确会有"1"这个属性,是为了和其它的对象长得更像吧、、
【 在 ottffsse 的大作中提到: 】
: a[1]为什么不是 情形2呢?因为a是个数组因此也是个对象,这个对象有属性“1”,其【value】 attribute的值返回。这样理解对么?
: =============================================
: 发信人: zli07 (Anonymous), 信区: WebDev
: ...................
--
FROM 123.125.116.*
我在IE下试a[1.0]就是a[1]啊。
【 在 fairfox 的大作中提到: 】
: 网上说 js 数组下标都是转成字符串来访问,所以 a[0] 和 a['0'] 是一样的, 而a[1] 和
: a[1.0] 不是一个,a[1.0] 相当于 a['1.0']
: 但同时数组又有个 length 属性,只有整数下标的元素被计算在内。js 又没有整数类型。
: ...................
--
FROM 59.175.226.*