为什么在使用JavaScript的条件(三元)运算符时,使用"="和"==="会得到不同的结果?

25 浏览
0 Comments

为什么在使用JavaScript的条件(三元)运算符时,使用"="和"==="会得到不同的结果?

我想用JavaScript编写一个程序,当两个整数相等时返回\"true\",不相等时返回\"false\"。\n我尝试过使用\"=\"和\"===\"符号,但是我不知道为什么程序的结果会根据使用的符号而改变,即使函数中的数字没有改变。\n这段代码的结果是\"false\",这正是我想要的:\n

function checkEqual(a, b) {
  return (a === b ? true : false );
}
checkEqual(1, 2);

\n这段代码的结果是\"true\",这不是我想要的:\n

function checkEqual(a, b) {
  return (a = b ? true : false );
}
checkEqual(1, 2);

\n在checkEqual()中的数字在两次尝试中是相同的,但我想知道为什么第二个结果是\"true\"。

0
0 Comments

在JavaScript中,使用条件(三元)运算符时,使用"="和"==="会得到不同的结果。下面我们来解析一下问题出现的原因以及解决方法:

首先,我们看第一个例子,使用"==="运算符:

function checkEqual(a, b) {
  return (a === b ? true : false );
}
checkEqual(1, 2);

这里使用了恒等运算符(也被称为严格相等运算符)。它检查值是否相等(且类型相同)。

由于a是1,b是2,所以a === b的结果是false(因为它们不相等)。当然,false ? true : false的结果是false。因此,整个表达式返回false。你也可以简化为以下形式:

function checkEqual(a, b) {
  return a === b;
}
checkEqual(1, 2);

接下来,我们看第二个例子,使用"="运算符:

function checkEqual(a, b) {
  return (a = b ? true : false );
}
checkEqual(1, 2);

这里使用的是赋值运算符,而不是等号或恒等号。

在这种情况下,a = b将b的值赋给a并返回。因此,a和b都将变成2,而a = b的结果是2。最后,由于2是一个真值,2 ? true : false的结果是true。

需要注意的是,如果将一个假值传递给b,将会得到false的结果。例如调用checkEqual(1, null);。传递给a的值是无关紧要的。

最后,我们来看你没有使用的情况,使用"=="运算符:

function checkEqual(a, b) {
  return (a == b ? true : false );
}
checkEqual(1, 2);

这里使用的是等号运算符。它检查值是否相等(但它可以自由地转换值来进行比较)。

与第一个例子类似,这也会返回false。不同之处在于类型。在JavaScript中,"1" == 1的结果是true,但"1" === 1的结果是false。也就是说,使用"=="运算符允许运行时将值转换为比较,但使用"==="运算符则不允许。

可以参考以下链接了解更多相关信息:

- [JavaScript comparison operators: Identity vs. Equality](https://stackoverflow.com/q/5447024/402022)

- [Which equals operator (== vs ===) should be used in JavaScript comparisons?](https://stackoverflow.com/q/359494/402022)

0
0 Comments

在JavaScript中,赋值运算符=并不用于检查相等性,它仅用于赋值。用于检查相等性的运算符是==(用于"抽象"相等性)和===(用于"严格"相等性)。如果ab都是数字,=====将得到相同的结果。同样,!=!==也是如此。

然而,在使用条件(三元)运算符时,====可能会导致不同的结果。这是因为条件(三元)运算符根据条件的真假返回不同的值。当条件为真时,返回第一个表达式的值;当条件为假时,返回第二个表达式的值。

问题出现的原因是,=只是一个赋值运算符,它会将第一个表达式的值赋给变量,而不会比较两个表达式的相等性。因此,在使用条件(三元)运算符时,如果使用=来检查相等性,实际上是将第一个表达式的值赋给变量,而不是根据相等性进行比较。

解决这个问题的方法是使用正确的相等性运算符:===。这个运算符会比较两个表达式的值和类型是否相等。因此,当使用===来检查相等性时,条件(三元)运算符将根据表达式的相等性返回正确的结果。

下面是使用====的条件(三元)运算符的示例代码:

var a = 5;
var b = 5;
var result1 = (a == b) ? "Equal" : "Not equal";
var result2 = (a === b) ? "Equal" : "Not equal";
console.log(result1); // Output: Equal
console.log(result2); // Output: Equal

在这个示例中,ab都是数字,并且它们的值和类型都相等。因此,无论使用=还是===,条件(三元)运算符都会返回"Equal"。

总结起来,=用于赋值,==用于"抽象"相等性比较,===用于"严格"相等性比较。在使用条件(三元)运算符时,应该使用正确的相等性运算符来检查相等性,以获得正确的结果。

0
0 Comments

在JavaScript中,使用条件(三元)运算符时,使用"="和"==="会得到不同的结果。这个问题的出现原因是你使用了赋值运算符"="来赋值给变量a一个值b,因此a变为了true。而你想要做的是使用相等运算符"=="来进行比较。

"="是赋值运算符。

"=="是相等运算符。

"==="是严格相等运算符。

你可以查看文档进行深入了解。

解决这个问题的方法是使用相等运算符"=="而不是赋值运算符"="来比较两个值。这样就可以得到正确的结果。

0