Деструктуризация строки JS: остаточный параметр возвращает противоречивые данные
Рассмотрим следующие примеры
Старый проект:
const [x, ...y] = "text";
console.log(x) // "t"
console.log(y) // "ext"
Новый проект на базе CRA:
const [x, ...y] = "text";
console.log(x) // "t"
console.log(y) // ["e", "x", "t"]
я не знаю почему
y
возвращает строку (
"ext"
) для старого проекта, где это массив символов (
["e", "x", "t"]
) для нового проекта. Это как-то связано с разными версиями JS?
Примечание. Оба результата были извлечены после запуска сервера разработки webpack.
1 ответ
на веб- сайте babel вы можете видеть, что ваш код основан на свободном преобразовании es2015 в этот код, поэтому вывод этого кода совпадает с вашим старым проектом.
"use strict";
var _text = "text",
x = _text[0],
y = _text.slice(1);
console.log(x); // "t"
console.log(y); // "ext"