#javascript #ecmascript-6 #destructor #ecma #rest-parameters
#javascript #ecmascript-6 #деструктор #ecma #rest-параметры
Вопрос:
Рассмотрим следующие примеры
Старый проект:
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
возвращает string ( "ext"
) для старого проекта, где это массив символов ( ["e", "x", "t"]
) для нового проекта. Это как-то связано с разными версиями JS?
Примечание: Оба результата были извлечены после запуска webpack dev server.
Комментарии:
1. Второй вывод — это тот, который требуется для спецификации … (параметры rest всегда должны создавать массив, независимо от того, что было деструктурировано)
Ответ №1:
на веб-сайте babel вы можете видеть, что ваш код, основанный на es2015-loose, преобразуется в этот код, поэтому вывод этого кода совпадает с вашим старым проектом
"use strict";
var _text = "text",
x = _text[0],
y = _text.slice(1);
console.log(x); // "t"
console.log(y); // "ext"