您的位置:首页 > Web前端 > JavaScript

JavaScript 中比较、逻辑运算符

2019-05-29 19:30 106 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_43623306/article/details/90675710

JavaScript 中比较、逻辑运算符

 

一、比较运算

1.比较运算:返回true 或者 false

2.一个等于号是赋值,两个或者三个才是比较

var x = 18;

var value = x == "18"; //一个疑问句 x是不是等于18?

console.log(value); // 返回一个布尔值

 

var value = x >= 18; //一个疑问句 x是不是大于或等于18?

console.log(value); //布尔值

如图所示:

 

3.三个等于号要绝对相等,值和类型必须都相等

// 三个等于号要绝对相等,值和类型必须都相等

var x = 18;

var value = x === "18"; //一个疑问句 x是不是等于18?

console.log(value); // 返回一个布尔值

如图所示:

 

4.对于!不相等才返回正确

// 不相等才返回正确

var x = 18;

var value = x != 20; //一个疑问句 x是不是不等于20?

console.log(value); //布尔值

如图所示:

 

//值和类型有一个不相等,都会返回true

var value = x !== "18"; //一个疑问句 x是不是不等于18?

console.log(value); //布尔值

如图所示:

 

5.小总结

1.非0都是正确,代表有值

2.容易犯的错误:比较写成一个=,变成赋值语句,永远成立

3.特殊 NaN == NaN 返回false,自己不等于自己

4. isNaN() 这个内置函数,判断变量 是否是非数字值。

            参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

            isNaN(100) -> false

            isNaN(NaN) -> true

            isNaN("ABC") -> true

            isNaN(undefinde) -> true


 

6.有哪些值在判断的时候是不成立的(false)?

1.空的字符串,连空格都没有

2.number 中的 0

3.number 中的 NaN

4.undefined

5.null

6.false

// () 最终拿到的是一个正确或者错误,无论表达式有多么长

if (null) {

// 成立

console.log("返回的是正确,执行成立");

} else {

// 不成立

console.log("返回的是错误,执行不成立语句");

}

如图所示:

 

二、逻辑运算符

 

1.  && : 并且,全都满足才会返回正确,否则返回错误

x = 10;

value = x > 5 && x < 20 && x == 10;

console.log(value);

如图所示:

 

2.  || : 或者,满足任意一个条件都会返回正确

x = 10;

value = x > 5 || x < 2 || x == 1;

console.log(value);

如图所示:

 

3.  ! : 取非

value = !undefined;

console.log(value);

 

value = !(x == 10);

console.log(value);


如图所示:

 

4.  && 的短路问题, 当第一个表达式是错误,那么第一个表达式的值就作为整个判断的结果返回,后面就会被短路,不执行了!!如果第一个表达式是正确的,则返回后面的表达式的值

value = undefined && ++b;

// value = undefined? b = 0?

console.log(value,b);

如图所示:

 

var a = 10, b = 0;

value = a && b;

// 假如a是对的,返回值是b

console.log(value);

如图所示:

 

b = 0;

value = 100 && ++b;

// value = 1? b = 1?

console.log(value,b);

如图所示:

 

b = 0;

value = 100 && b++;

// value = 0? b = 1?

console.log(value,b);

如图所示:

 

5. || 的短路问题, 当第一个表达式是正确的,那么返回第一个表达式的值,后面被短路,就不执行了,如果第一个表达式是错误的,那么返回第二个表达式的值

// 第一个正确,返回第一个表达式的值,后面被短路,就不执行了

b = 0;

value = 100 || ++b || b++;

console.log(value,b); // 100 0

如图所示:

 

b = 0;

value = 100 || (++b && b++);

console.log(value,b); // 100 0

如图所示:

 

 

6. 优先级: !(非) > &&(与) > ||(或), 加上括号后,优先级最大

b = 20;

value = (100 || ++b) && b++;

// 100 && b++

console.log(value,b); // 20 21

如图所示:

 

b = 10;

value = 100 || (++b && b++);

// 100 || (整体)

console.log(value,b); // 100 10

如图所示:

 

7.判断闰年

// 1.能被4整除但不能被100整除

// 2.能被400整除的为世纪闰年

var year = 2001;

var value = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);

if (value) {

console.log(year + "是闰年");

} else {

console.log(year + "不是闰年");

}

如图所示:

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: