问题描述
在控制台中打印出arguments
是不可以被concat
方法展开的,但是arguments
的Symbol.isConcatSpreadable
属性为undefined
,MDN文档中写到,类数组对象的Symbol.isConcatSpreadable
应该为false
;同时如果Symbol.isConcatSpreadable
属性为undefined
则代表改对象是可以被concat
展开的(因为Array
对象的该属性为undefined
见参考博客),而在查看lodash
源码的时候发现其中有个方法isFlattenable将arguments
判定为可展开对象。但是明明在控制台里运行的时候arguments
是无法被concat
展开的。
比较迷惑的是,究竟是哪个错了呢?
控制台中的代码
function foo(){
return [1,2,3].concat(arguments)
}
foo(4,5,6,7) // [1, 2, 3, [4,5,6,7]]
好好读读这两段话,类数组的默认行为跟数组相反。。。
