Pra*_*eek 10 javascript arrays
为什么将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
Run Code Online (Sandbox Code Playgroud)
Nin*_*olz 10
基本上你得到一个implicid类型转换,首先toString,
该
Array对象覆盖了该toString方法Object.对于Array对象,toString方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素.
toString当数组表示为文本值或在字符串连接中引用数组时,JavaScript会自动调用该方法.
喜欢join作品,然后它被转换为数字.
Run Code Online (Sandbox Code Playgroud)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