关于arguments对象的Symbol.isConcatSpreadable属性

问题描述

在控制台中打印出arguments是不可以被concat方法展开的,但是argumentsSymbol.isConcatSpreadable属性为undefinedMDN文档中写到,类数组对象的Symbol.isConcatSpreadable应该为false;同时如果Symbol.isConcatSpreadable属性为undefined则代表改对象是可以被concat展开的(因为Array对象的该属性为undefined参考博客),而在查看lodash源码的时候发现其中有个方法isFlattenablearguments判定为可展开对象。但是明明在控制台里运行的时候arguments是无法被concat展开的。

比较迷惑的是,究竟是哪个错了呢?

控制台中的代码

function foo(){
    return [1,2,3].concat(arguments)
}

foo(4,5,6,7) //  [1, 2, 3, [4,5,6,7]]
阅读 2k
1 个回答

好好读读这两段话,类数组的默认行为跟数组相反。。。
clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题