Деструктуризация массива в ES6: непредвиденное поведение
В ES6 назначение деструктуризации массивов может привести к неожиданным результатам, оставляя программистов в недоумении. Один из таких примеров иллюстрируется следующим кодом:
let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)
Предполагаемый вывод:
a=A b=BB c =C
Фактический результат:
a=BB b=C c=undefined
Объяснение:
Напротив Согласно ожиданиям, этот код не дает желаемого результата. Вместо этого он меняет значения b и c, оставляя c неопределенным. Чтобы понять, почему это происходит, нам нужно внимательно изучить код.
Разбор и оценка:
В JavaScript точки с запятой не являются обязательными для разделения операторов. Без явных точек с запятой код анализируется как один оператор:
let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);
Разбивка утверждения:
Последствия:
Поэтому код присваивает неопределенное значение как a, так и c, а b правильно получает значение 'C'. Чтобы избежать такого поведения, программисты. следует явно использовать точки с запятой или начинать каждую строку с оператора, который требует автоматической вставки точки с запятой (например, (, [, /, , - или `).
Это понимание гарантирует, что назначения деструктуризации в ES6 работают как и ожидалось, предотвращая неожиданные замены значений и неопределенные назначения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3