Я продолжаю видеть функции, которые выглядят так в кодовой базе, над которой я работаю:
const func = ({ param1, param2 }) => {
//do stuff
}
Что именно это делает? Мне трудно найти это в Google, потому что я даже не уверен, как это называется или как описать это в поиске Google.
javascript
ecmascript-6
Натан
источник
источник
Ответы:
Это деструктурирует , но содержится в параметрах. Эквивалент без деструктуризации:
источник
Это передача объекта как свойства.
Это в основном сокращение для
Другой способ использования этой техники без параметров заключается в следующем. Давайте на секунду рассмотрим, что someObject действительно содержит эти свойства.
источник
Это назначение деструктуризации объекта. Как и я, вы, возможно, нашли это удивительным, потому что синтаксис деструктуризации объекта ES6 выглядит, но НЕ ведет себя как построение литерала объекта.
Он поддерживает очень сжатую форму, с которой вы столкнулись, а также переименование полей и аргументов по умолчанию:
По сути, это {oldkeyname: newkeyname = defaultvalue, ...}. ':' НЕ является разделителем ключа / значения; '=' есть.
Некоторым следствием этого решения о языковом дизайне является то, что вам, возможно, придется делать такие вещи, как
Дополнительные скобки препятствуют синтаксическому анализу левых фигурных скобок как блока, а начальная точка с запятой препятствует синтаксическому анализу скобок как вызову функции в предыдущей строке.
Для получения дополнительной информации см. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment.
Осторожно, ключевые ошибки при назначении деструктуризации объекта НЕ генерируются; вы просто получаете значения «undefined», будь то ключевая ошибка или какая-то другая ошибка, которая молча передается как «undefined».
источник