TGViewer
HowProgrammingWorks - JavaScript and Node.js Programming HowProgrammingWorks - JavaScript and Node.js Programming @howprogrammingworks · 6.52K subscribers
Post #2190 1.21K
Если взять одно, что я хочу в JavaScript, то это будет Block Expression. При чем в V8 все готово, чтобы это сделать, в каждом блоке последнее выражение отдельно сохраняется в структуре V8, я даже согласен на do-expression, но зачем этот do?

Сейчас приходится либо выносить функцию или использовать IIFE или let снаружи - это отвратительно:

let price;
if (user.isAdmin) {
price = 0;
} else if (user.hasDiscount) {
const discount = calculateDiscount(user);
price = basePrice * (1 - discount);
} else {
price = basePrice;
}


Промежуточные переменные не загрязняют scope, а можно было бы:

const id = {
const normalized = name.trim().toLowerCase();
const separator = normalized.includes("-") ? "-" : "_";
const parts = normalized.split(separator);
parts.join(":");
};


Вместо IIFE только представьте как можно было бы переписать:

const config = (() => {
const env = process.env.NODE_ENV ?? 'development';
const production = env === 'production';
// do something...
return { env, host, port, secure: production };
})();


Но лучше всего в try/catch, представьте это как перепишем:

let data;

try {
const text = await readFile(path, 'utf8');
data = JSON.parse(text);
} catch {
data = 'default value';
}


А теперь представьте литерал объекта:

const response = {
user,
permissions: {
const roles = await getRoles(user);
if (roles.includes('admin')) ['read', 'write", 'delete'];
else if (roles.includes('editor')) ['read', 'write'];
else ['read'];
},
displayName: { ... some calculations },
};


Или вызов функции:

render({
const width = container.clientWidth;
const columns = Math.max(1, Math.floor(width / 300));
const gap = columns > 3 ? 24 : 16;
{ width, columns, gap };
});
  • 🔥 12
  • ❤ 2
  • 🤯 2
  • 👍 1
  • 🤩 1
More from @howprogrammingworks
  1. Oct 7, 2026Post #2189
  2. Oct 6, 2026Post #2188
  3. Oct 4, 2026На кого учиться, если все профессии отберут роботы? Где пределы экспансии искусственного и…
  4. Oct 4, 2026Объем текста и объем кода должны заставлять нас не махнуть рукой, а заставлять ии делать м…
  5. Oct 3, 2026https://youtu.be/I5ILntVSjkQ
  6. Oct 2, 2026Dashboard with real-time monitoring Released in reslop v0.2.6 https://github.com/tshemsedi…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →