gpt4 book ai didi

javascript - 为什么 Babel 在将数组传递给数组扩展运算符的 concat 之前复制数组?

转载 作者:行者123 更新时间:2023-11-30 20:47:15 24 4
gpt4 key购买 nike

我的代码:

const allMessages = [ ...resultMessages, ...oldNotErrorMessages ];

通天塔 convert to

function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}

var allMessages = [].concat(
_toConsumableArray(resultMessages),
_toConsumableArray(oldNotErrorMessages)
);

为什么 Babel 在将数组传递给 concat 之前复制数组?为什么不 if(Array.isArray(arr)) return arr;

最佳答案

Array.prototype.concat spread operator 将把所有参数放入新数组中,无论它是什么不是应该可以。

举这两个例子。

console.log([].concat(1, true));

console.log([].concat(Array.from(1), Array.from(true)));

第一个将返回一个包含 1 和 true 的数组,而 Array.from()将过滤掉那些(因为它们不可迭代或类似数组)所以结果将是一个空数组。

如果我们尝试在原生支持它的浏览器中运行传播运算符,我们将看到它应该如何工作。

[...true];

因此,虽然这似乎不是最佳的实现方式,但他们只是确保运算符(operator)按照规范工作。

关于javascript - 为什么 Babel 在将数组传递给数组扩展运算符的 concat 之前复制数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48577644/

24 4 0
文章推荐: c# - 日期时间格式不正确?
文章推荐: javascript - 在 requirejs 的全局范围内加载 AMD 模块
文章推荐: c# - FormatException - 输入字符串的格式不正确
文章推荐: javascript - 内部错误 : too much recursion
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com