为什么比较一个长度为1的数组的整数返回true而false为长度为2或更多的数组?

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作品,然后它被转换为数字.

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
Run Code Online (Sandbox Code Playgroud)