为什么将 0 与长度为 1 的数组进行比较会返回 true,而对于长度为 2 或更大的数组则返回 false?
例如,
var a=[] //undefined
0<a //returns false
a.push(1) // [1]
0<a // returns true
a.push(2) // [1, 2]
0<a // return false
a.push(3) // [1, 2, 3]
0<a // return false
基本上你首先会得到隐式类型转换toString https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString#Description,
The Array https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array对象覆盖toString
的方法Object https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object。对于 Array 对象,toString 方法连接数组并返回一个字符串,其中包含以逗号分隔的每个数组元素。
JavaScript 调用toString
当要将数组表示为文本值或在字符串连接中引用数组时,会自动调用此方法。
like join
有效,然后将其转换为数字。
what you do what you get result array string number
------------ ------------ ------ --------- -------- ----------
var a = [];
0 < a 0 < 0 false [] -> '' -> 0
a.push(1);
0 < a 0 < 1 true [1] -> '1' -> 1
a.push(2);
0 < a 0 < NaN false [1, 2] -> '1,2' -> NaN
a.push(3);
0 < a 0 < NaN false [1, 2, 3] -> '1,2,3' -> NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)