繁体   English   中英

JavaScript var声明与等效项

[英]Javascript var declaration vs equivalent

这可能是疯狂的疯狂……但我仍在学习。

让我们从第1课第28课的代码学院(因为我实际上是在较低的水平上)学习。

说明:编写自己的if / else语句。 唯一的指示是,评估语句的结果是“我完成了第一门课程!”控制台的日志。

我写:

var num = 1;

if(num = 2){
console.log("Testing Fail");
}
else{
console.log("I finished my first course!");
} 

这没有用...但是想了一会儿后我开了一枪

var num = 1;

if(num == 2){
console.log("Testing Fail");
}
else{
console.log("I finished my first course!");
}

这工作了。 所以。 我将变量num命名为1,然后将其设置为等于1。然后我说,如果num等于2,则console.log会写“ testing failed”-否则写“我完成了我的第一门课程!” ...

它没有解释为什么我的第一次尝试没有奏效。 我声明变量等于1,但随后在我的if / else语句中说,如果变量等于2,则执行条件。 为什么我不能两次声明一个语句,或者至少不能在一个条件语句中声明?

我在这里缺少逻辑……可能很简单,但我正在学习。

=用于分配,而==用于逻辑运算符(比较:等于)。 因此,在第一种情况( num = 2 )中,您将num值分配给了2 (赋值返回值2 ,因此被评估为true ),在第二种情况( num == 2 )中,您检查了num等于2 (被评估为false )。

PS:还有===逻辑运算符,用于检查值是否完全相等(等于值和等于类型)。

仅仅因为“ =”,在第二次尝试中,您使用了“ ==”并且可以工作。

此“ =”用于分配,例如:

var num=2;

例如,此“ ==”用于比较:

if(num==2)

因此,您不能使用赋值指令来评估相等性,希望您得到它:D,祝您编程愉快

其他人已经指出的区别: if (num = 2)在第一种情况下和if (num == 2)在第二种情况下。 但是没有人指出在第一种情况下到底发生了什么。 在第一种情况下,当您执行if (num = 2) ,表达式num = 22分配给变量num JavaScript分配返回分配的值。 分配的结果是返回了2号。 表达式的最终结果if (num = 2)等于if (2) ,它等于if (true)因为javascript会将0视为false,并将任何非零值视为true。 这就是为什么在第一种情况下,您看到“ Testing Fail打印到控制台的原因。

在第一种情况下, =是赋值运算符

第二,==是逻辑运算符。

实际上,最好使用===代替==

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM