I have a function called updateLanguages which I can write in two ways.
First, using object destructuring and || operator:
const updateLanguages = async (content, post) => {
const languages = new Set();
try {
const attachments = post.attachments || {};
const { poll, mediaFile } = attachments;
const { first, second, third, fourth } = poll || {};
const { description: mediaDescription } = mediaFile || {};
await Promise.all([
populateLanguages(content, languages),
first && populateLanguages(first, languages),
second && populateLanguages(second, languages),
third && populateLanguages(third, languages),
fourth && populateLanguages(fourth, languages),
mediaDescription && populateLanguages(mediaDescription, languages)
]);
} catch {
languages.add("xx");
}
post.languages = [...languages];
};
Second, using if blocks:
const updateLanguages = async (content, post) => {
const languages = new Set();
try {
await populateLanguages(content, languages);
const attachments = post.attachments;
if(attachments) {
const { poll, mediaFile } = attachments;
if(poll) {
const { first, second, third, fourth } = poll;
await Promise.all([
first && populateLanguages(first, languages),
second && populateLanguages(second, languages),
third && populateLanguages(third, languages),
fourth && populateLanguages(fourth, languages)
]);
}
if(mediaFile) {
const { description: mediaDescription } = mediaFile;
if(mediaDescription) {
await populateLanguages(mediaDescription, languages);
}
}
}
} catch {
languages.add("xx");
}
post.languages = [...languages];
};
Which one would perform faster and use less memory? And why?