首页 > 解决方案 > 为什么 '[' + array + ']' 返回一个普通数组?

问题描述

所以我只是在写一些代码,并意识到在数组周围添加方括号只会返回一个完整的正常数组,如下所示,

var arr = [1, 2, 3]
var addSquareBrackets = function(arr) {
    return '[' + arr + ']';
}

addSquareBrackets(arr); // <- returns [1, 2, 3] 

当在数组周围连接花括号时也会发生同样的事情。

var arr = [1, 2, 3]
var addCurlyBrackets = function(arr) {
    return '{' + arr + '}';
}

addCurlyBrackets(arr); // <- returns {1, 2, 3}

第一个示例返回 [1, 2, 3] 而不是 [[1, 2, 3]] 或第二个示例返回 {1, 2, 3} 而不是 {[1, 2, 3]}。有人可以帮我理解为什么会这样吗?

标签: javascriptarraysjavascript-objects

解决方案


使用+运算符,只要一侧有字符串,另一侧的任何表达式也会被强制转换为字符串。

数组,当被强制转换为字符串时,会.join(',')调用它们:

console.log(String([1, 2, 3]));

他们不会[ ]结果周围添加数组分隔符 - 他们只是将普通值用逗号连接在一起。


推荐阅读