在C++中,您可以做到:
if (MyClass* obj = MyClass::getInstance()) { ... }
在JavaScript中,只有函数作用域变量的概念,因此以下语句无法实现。
if (var x = getTrueOrFalseValue()) { ... }
但是ES6引入了
let
和const
关键字,它们声明的变量只能在块作用域内访问。为什么不能在if/while条件语句中使用呢?例如:if (let x = getTrueOrFalseValue()) { ... }
我觉得这很酷,因为它不会在函数作用域中浪费未使用的变量,并且允许仅在if/while块作用域中使用它们。
let (x = get…()) { }
块曾经被考虑过。 - Bergi