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

使用if语句设置javascript变量-';var=x';在IF内部还是外部?,javascript,var,Javascript,Var,这可能是一个基本问题,但我很难找到答案 您想基于var A设置var 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 === "r

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

您想基于var A设置var 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";

三元表达式将始终返回第一个值(如果为真),第二个值(如果不是)。非常适合使用一次性的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";
第二选项

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-语句,而不是一个if-表达式,如say F#。这意味着您没有初始化B

你可能正在寻找的是

var B = A ==="red" ? "hot" : "cool" 
也就是说,如果A是一个等于
“red”
的字符串,则使用条件运算符(*)将B初始化为
“hot”
,否则初始化为
“cool”


(*)运算符有时被不精确地称为。只要从未添加过另一个三元运算符,就称之为三元运算符并不是件坏事,在这一点上它将是不明确的

首先,您测试变量A的语法是错误的,其次是三元运算符,用于完成之后的操作为什么要将var用于A?为什么分配给它而不是比较它呢?你是在检查A是否等于“红色”(==)还是将A分配为“红色”(=)?试试看!它将抛出一个
SyntaxError
。您试图实现的是什么?如果删除无用的内容,效果会更好parenthesis@AliMovahedi如果它能提高可读性,那就永远不会useless@AliMovahedi这归结为偏好问题。parens在imo.YMMV中增加了可读性。如果A为1或(布尔)true,最好使用
==
来避免为true,这样就不会有类型转换。您需要定义A,否则它会给您一个A未定义错误OP正在比较它,所以我假设它已经定义,但您的建议将有助于快速测试,我会编辑它。