Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我用“我的”得到不同的结果=&引用;vs.“===&引用;在javascript中使用条件(三元)运算符?_Javascript_Boolean_Ternary Operator - Fatal编程技术网

为什么我用“我的”得到不同的结果=&引用;vs.“===&引用;在javascript中使用条件(三元)运算符?

为什么我用“我的”得到不同的结果=&引用;vs.“===&引用;在javascript中使用条件(三元)运算符?,javascript,boolean,ternary-operator,Javascript,Boolean,Ternary Operator,我想用javascript编写一个程序,当两个整数相等时生成“true”,当两个整数不相等时生成“false” 我尝试过使用“=”符号和“==”符号,但我不知道为什么程序的结果会根据我使用的符号而变化,即使不改变函数中的数字 此代码导致“false”,这正是我想要的: function checkEqual(a, b) { return (a === b ? true : false ); } checkEqual(1, 2); function checkEqual(a, b) {

我想用javascript编写一个程序,当两个整数相等时生成“true”,当两个整数不相等时生成“false”

我尝试过使用“=”符号和“==”符号,但我不知道为什么程序的结果会根据我使用的符号而变化,即使不改变函数中的数字

此代码导致“false”,这正是我想要的:

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

checkEqual(1, 2);

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

checkEqual(1, 2);
此代码的结果为“true”,这不是我想要的:

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

checkEqual(1, 2);

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

checkEqual(1, 2);

checkEqual()中的数字在两次尝试中都是相同的,但我想知道为什么第二个是“true”。

您正在用
b
值分配
a
值。因此,
a
变为真

您要做的是使用相等运算符检查

  • =
    是赋值运算符
  • =
    是相等运算符
  • =
    是严格的相等运算符

看一看要深潜的代码。

您正在用
b
值分配
a
值。因此,
a
变为真

您要做的是使用相等运算符检查

  • =
    是赋值运算符
  • =
    是相等运算符
  • =
    是严格的相等运算符

请看一看要深入研究的问题。

=
不检查相等性,它仅用于赋值。在JavaScript中检查相等性的运算符是
==
(表示“抽象”相等)和
===
(表示“严格”相等)。如果
a
b
都是数字,
=
==
的作用相同。

=
不检查相等性,它只用于赋值。在JavaScript中检查相等性的运算符是
==
(表示“抽象”相等)和
===
(表示“严格”相等)。如果
a
b
都是数字,
=
==
的工作原理相同。

第一种情况(
==
): 这里使用的是标识运算符(也称为严格相等运算符)。它检查这些值是否相等(且类型相同)

由于
a
1
b
2
,因此
a===b
变为
false
(因为它们不同)。当然
false?true:false
false
。因此,整个过程返回
false
。是的,您可以这样做:

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

checkEqual(1, 2);

第二种情况(
=
): 这里您使用的是assignment操作符。这不是平等或身份检查

在这种情况下,
a=b
b
的值赋给
a
,并返回该值。因此
a
b
都将是
2
,而
a=b
的计算结果是
2
。最后,由于
2
是一个值,
2?真:假
为真

注意:这也意味着如果要为
b
传递一个值,则会得到
false
。例如,调用:
checkEqual(1,null)传递给
a
的值不相关


您没有执行的案例(
==
): 这里您将使用相等运算符。它检查值是否相等(但是,可以自由地将值转换为检查)

与第一个类似,这将返回
false
。有什么区别?嗯,类型。在Javascript中,“1”==1
true
,但
“1”==1
false
。也就是说,通过使用
=
您允许运行时转换值以进行比较,但是使用
==
则不允许

请参见和

第一种情况(
==
): 这里使用的是标识运算符(也称为严格相等运算符)。它检查这些值是否相等(且类型相同)

由于
a
1
b
2
,因此
a===b
变为
false
(因为它们不同)。当然
false?true:false
false
。因此,整个过程返回
false
。是的,您可以这样做:

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

checkEqual(1, 2);

第二种情况(
=
): 这里您使用的是assignment操作符。这不是平等或身份检查

在这种情况下,
a=b
b
的值赋给
a
,并返回该值。因此
a
b
都将是
2
,而
a=b
的计算结果是
2
。最后,由于
2
是一个值,
2?真:假
为真

注意:这也意味着如果要为
b
传递一个值,则会得到
false
。例如,调用:
checkEqual(1,null)传递给
a
的值不相关


您没有执行的案例(
==
): 这里您将使用相等运算符。它检查值是否相等(但是,可以自由地将值转换为检查)

与第一个类似,这将返回
false
。有什么区别?嗯,类型。在Javascript中,“1”==1
true
,但
“1”==1
false
。也就是说,通过使用
=
您允许运行时转换值以进行比较,但是使用
==
则不允许


请参见和

在第二个代码段中,您使用的是赋值运算符
=
,而不是其中一个比较运算符(
=
==
),这是此处的主要错误

现在,为了简洁地回答您的具体问题,报告如下:
“赋值操作的计算结果为赋值。”

例如:

a = b ? true : false  --> if b != 0, this returns true,
                      --> if b = 0, this returns false

在第二段代码中,