Was ist mit der Destrukturierung über die Parameter der Funktion? Spread-Operator fängt die irrelevant
Schlüssel als auch, im Grunde schafft es Kopie des Objekts:
// EDIT: Hinzugefügt zwei weitere Destrukturierung Beispiele, auch ich entdecken, dass Ihre Funktion mit gespreiztem Operator Variablen zu globalem Namensraum aus irgendeinem Grunde leckt, zumindest hier in der sO-snippet:
let state = {
form: {
name: 'test',
phone: 123,
shift: true,
irrelevant: false,
}
};
(function() {
let fun2 = ({form: {name, phone, shift}}) => ({name, phone, shift});
console.log('fun2', fun2(state));
})();
try {
console.log(name, phone, shift);
} catch (e) {
console.log('no leak');
}
(function() {
let fun3 = state => {
let {name, phone, shift} = state.form;
return {name, phone, shift};
};
console.log('fun3', fun3(state));
})();
try {
console.log(name, phone, shift);
} catch (e) {
console.log('no leak');
}
(function() {
let fun = state => ({
...{name, phone, shift} = state.form
});
console.log('fun', fun(state));
})();
try {
console.log('leak:', name, phone, shift);
} catch (e) {
console.log('no leak');
}
Ja sicher, aber ich versuche, meine 'map' Funktion so einfach wie möglich zu halten, um die Möglichkeit, dass mein' state' wird in Zukunft geändert werden –
Und du r 'fun4' ist eine ziemlich gute Lösung –
Leider hat fun4 Variablen verwendet, die zum globalen Namensraum durchgesickert sind ... es ist komisch, oder? – Oskar