创建变量时是否有更简洁的方法来使用局部作用域?



我来自ML世界,在那里你可以创建一个这样的变量:

let myVar =
let result1 = doSomething()
let result2 = doSomethingElse()
result1 + result2

请注意,result1result2仅在 3 行范围内可见,在其他地方不可见。这很好,可以避免命名冲突和污染。

在TypeScript中,看起来你可以使用匿名函数:

const myVar = 
function() {
const result1 = doSomething();
const result2 = doSomethingElse();
return result1 + result2;        
}();

但这会使所有内容都双重缩进,并使其看起来像是在声明函数而不是值。有没有更干净或更明确的方法来解决这个问题?

你可以对IIFE使用胖箭头函数:

const myVar = (() => {
const result1 = doSomething();
const result2 = doSomethingElse();
return result1 + result2;
})();

但为什么不只是

const myVar = doSomething() + doSomethingElse();

如果doSomething()doSomethingElse()的实际表达式足够大,以至于看起来很麻烦,那么无论如何都应该将它们重构为真正的函数。

最新更新