我来自ML世界,在那里你可以创建一个这样的变量:
let myVar =
let result1 = doSomething()
let result2 = doSomethingElse()
result1 + result2
请注意,result1
和result2
仅在 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()
的实际表达式足够大,以至于看起来很麻烦,那么无论如何都应该将它们重构为真正的函数。