为什么我用“我的”得到不同的结果=&引用;vs.“===&引用;在javascript中使用条件(三元)运算符?
我想用javascript编写一个程序,当两个整数相等时生成“true”,当两个整数不相等时生成“false” 我尝试过使用“=”符号和“==”符号,但我不知道为什么程序的结果会根据我使用的符号而变化,即使不改变函数中的数字 此代码导致“false”,这正是我想要的:为什么我用“我的”得到不同的结果=&引用;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) {
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
在第二段代码中,