在C ++中你可以做到
if (MyClass* obj = MyClass::getInstance()) { ... }
在JavaScript中,只有函数范围的变量,所以后面的语句没有意义
if (var x = getTrueOrFalseValue()) { ... }
但ES6引入了let
和const
个关键字,它们声明变量只能在块范围内访问。为什么你不允许在if / while条件下使用它?例如:
if (let x = getTrueOrFalseValue()) { ... }
我发现这很酷,因为它不会破坏未使用变量的函数范围,并且只允许在if / while块范围内使用它们。
答案 0 :(得分:2)
我认为这是不可能的,因为let只能用作语句,而不能用作表达式。如果你试试(让f = 3);你也会收到错误。
答案 1 :(得分:0)
这是最接近的,这里
function getTrueOrFalseValue() {
return true
}
if (!(x = void 0)) {
let x = getTrueOrFalseValue();
if (x) {
console.log(x)
}
}
function getTrueOrFalseValue() {
return true
}
if (!(this["x"]) || !(x)) {
let x = getTrueOrFalseValue();
if (x) {
console.log(x)
}
}