Javascript 为什么obj.a=(obj.a | |[]).push(10)使obj.a成为类型号

Javascript 为什么obj.a=(obj.a | |[]).push(10)使obj.a成为类型号,javascript,Javascript,我试图将一个值推送到数组的属性,如下所示 var obj = {}; obj.a = (obj.a || []).push(10); console.log( typeof obj.a ); // Returning number 如何更正此错误以将obj.a保留为数组?因为返回数组的新长度: 返回值 调用方法的对象的新长度属性 你可以做: (obj.a || (obj.a = [])).push(10); 非常感谢。如果我尝试上面的方法,比如obj.a=(obj.a | | ob

我试图将一个值推送到数组的属性,如下所示

 var obj = {};
 obj.a = (obj.a || []).push(10);
 console.log( typeof obj.a ); // Returning number  
如何更正此错误以将obj.a保留为数组?

因为返回数组的新长度:

返回值
调用方法的对象的新长度属性

你可以做:

(obj.a || (obj.a = [])).push(10);

非常感谢。如果我尝试上面的方法,比如
obj.a=(obj.a | | obj.a=[])。push(10)引用错误:赋值中的左侧无效哦,我想您还需要一组括号。整行代码只是
(obj.a | |(obj.a=[])).push(10)。在开始时删除分配,您正在将分配移到内部。然后您肯定在其他地方有错误,因为它工作正常:。