使用 if 语句设置 javascript 变量——'var = x' 应该在 IF 内部还是外部?

setting a javascript variable with an if statement -- should the 'var = x' be inside or outside the IF?

这可能是一个基本问题,但我很难找到答案。

您想根据变量 A 设置变量 B

你会吗

var B = if(A == "red"){"hot"}else{"cool"}

我认为这行不通。

我想你可以做到

if(A == "red"){var B = "hot"}else{var B = "cool"}

这看起来不是特别优雅。我的意思是,为了清楚起见,我更喜欢以 var b = .... 开头的内容。

虽然您可以为此使用 if 语句,但最好还是使用三元运算符。在您描述的示例中,您将其设置为:

var B = A === "red" ? "hot" : "cool";

一般三元运算符的工作原理如下:

someBooleanExpression ? resultIfSomeBooleanExpressionIsTrue : resultIfSomeBooleanExpressionIsFalse;

还要注意使用 === 来检查比较,而不是单个 =,这是赋值。 == 也可以使用,但最终可能不太准确

三元的完美使用

var B = (A ==="red") ? "hot":"cool";

三元表达式总是 return 如果为真则第一个值,否则为第二个值。非常适合一次性 if/else 语句,但如果您遇到更多嵌套条件,请务必使用传统的 if/else 块以提高可读性。

首先初始化变量,然后使用 if 语句进行比较,并在必要时分配新值

var a = "red";
var b;
if(a=="red"){
    b="hot";
}
else{
    b="cold";
}

第一个选项

var A = "blue";
var B = (A == "red") ? "hot" : "cool";

第二个选项

var A = "blue";
var B = ""; // Or simply: var B;
if (A == "red") B = "hot"; else B = "cool";

在您的核心中,您声明了一个初始化 a 到 "red" 这是真实的,因此永远不会使用 else 子句。在 JavaScript 中,它是一个 if-statement 而不是 if-expression ,就像 F# 中那样。这意味着你没有初始化 B.

您可能正在寻找的是

var B = A ==="red" ? "hot" : "cool" 

也就是说使用条件运算符(*)将B初始化为"hot"如果A是等于"red"的字符串否则为"cool"

(*) 运算符有时不准确地称为 ternary operator or more mistakenly the tertiary。只要没有添加另一个三元运算符,将它称为三元运算符并没有那么糟糕,在这一点上它会模棱两可