《JavaScript 比较和逻辑运算符》

JavaScript 比较 和 逻辑运算符


比较和逻辑运算符用于测试 true 或者 false


比较运算符

比较运算符在逻辑语句中使用,以测定变量或值是否相等。

x=5,下面的表格解释了比较运算符:

 

运算符描述比较返回值实例
==等于x==8false实例 »
x==5true实例 »
===绝对等于(值和类型均相等)x==="5"false实例 »
x===5true实例 »
!= 不等于x!=8true实例 »
!== 不绝对等于(值和类型有一个不相等,或两个都不相等)x!=="5"true实例 »
x!==5false实例 »
> 大于x>8false实例 »
< 小于x<8true实例 »
>= 大于或等于x>=8false实例 »
<= 小于或等于x<=8true实例 »

如何使用

可以在条件语句中使用比较运算符对值进行比较,然后根据结果来采取行动:

if (age<18) x="Too young";

您将在本教程的下一节中学习更多有关条件语句的知识。


逻辑运算符

逻辑运算符用于测定变量或值之间的逻辑。

给定 x=6 以及 y=3,下表解释了逻辑运算符:

运算符描述例子
&&and(x < 10 && y > 1) 为 true
||or(x==5 || y==5) 为 false
!not!(x==y) 为 true

条件运算符

JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。

语法

variablename=(condition)?value1:value2 

例子

实例

如果变量 age 中的值小于 18,则向变量 voteable 赋值 "年龄太小",否则赋值 "年龄已达到"

voteable=(age<18)?"年龄太小":"年龄已达到";

笔记

一、

JavaScript多元运算符

function test(p){
    var a=5,b=12;
    return p>1?p<b?p>b:p=6:p=3; // 这一行中出现了多个问号和冒号,看起来很乱怎么办呢
}

document.write(test(9));

其实很简单,寻找到多元运算符的头 ? 和尾 : 就好办多了

就成了这样:

p>1?p<b?p>b:p=6:p=3

p>1? 整体 :p=3

1、当 p>1 时返回 p<b?p>b:p=6

  • 1.1、当 p<b 时返回 p>b
  •  1.2、当 p>=b 时返回 p=6

2、当 p<=1 是返回 p=3 所以先执行 1

3、实例中当 p=9 的时候,返回 p<b?p>b:p=6 接着执行 1.1,当 p=9<12 时,返回 p>b,即 9>12,条件不成立所以最终结果为 false。

二、

三目运算 

8>5  ?    true   :    false   ;

条件 ?  值1   :   值2 ;

翻译成人话就是  8大于5吗?   大于 就是 true  大不于就是 false;

判断?号前面的条件是否成立, 成立 执行第一个值,不成立,执行第二个值。

三、

逻辑运算符用于测定变量或值之间的逻辑。除了常用的返回布尔值,也可以利用运算符的逻辑来获得我们想要的数字或枚举变量:

0||3 : 3

1||3 : 1

0&&3 : 0

1&&3 : 3

不难理解在这里 0 即为 false, >=1 的变量为 true, 并没有去“运算”数字,而只是根据与或的逻辑依靠布尔值来返回对应的变量。

四、

首先说一下,其他数据类型转换为布尔类型的规则: null、undefined、0、NaN、空字符串转换为false,其他转化为 true。

JavaScript 中有三种逻辑运算符:

1. 取反 !

首先把数据转化为布尔值,然后取反,结果为 true 或 false。

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(!"");   //true
console.log(!d);    //true
console.log(!a);    //false
console.log(!b);    //false
console.log(!obj);  //false
</script>

2. 逻辑与 &&

JavaScript 中逻辑与和其他语言不太一样,如果第一个操作数是 true(或者能够转为 true),计算结果就是第二个操作数,如果第一个操作数是 false,结果就是 false(短路计算),对于一些特殊数值不遵循以上规则。(个人理解为:如果运算的第一个操作数为true,则返回第二个操作数,反之则返回第一个操作数)

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(true && 10);            //第一个操作数是true,结果是第二个操作,也就是10
console.log(false && b);            //第一个操作数是false,结果flase
console.log(100 && false);          //第一个操作数是100,结果flase
console.log(undefined && false);    //第一个操作数是undefined,结果undefined
console.log(NaN && false);          //第一个操作数是NaN,结果NaN
console.log(null && false);         //第一个操作数是null,结果null
console.log('' && false);           //第一个操作数是空串,结果空串
console.log(0 && 100);              //结果是0
console.log(5 && 100);              //100
console.log(a && b);                //hello
console.log(obj && 200);            //200
</script>

3. 逻辑或 ||

如果第一个操作数不是 false,结果就是第一个操作数,否则结果是第二个操作数。如果第一个操作数能够转为 true,结果就是第一个操作数(个人理解为:如果运算的第一个操作数为 true,则返回第一个操作数,反之则返回第二个操作数)

<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;

console.log(true || 10);        //第一个操作数是true,结果是第一个操作,也就是true
console.log(false || b);        //第一个操作数是false,结果是第二个操作数b
console.log(100 || false);      //第一个操作数是100,结果100
console.log(undefined || 9);    //第一个操作数是undefined转false,结果9
console.log(NaN || false);      //第一个操作数是NaN转false,结果第二个操作数
console.log(null || a);         //第一个操作数是null转false,结果a
console.log('' || false);       //第一个操作数是空串转false,结果第二操作数
console.log(0 || 100);          //结果是100
console.log(5 || 100);          //5
console.log(a || b);            //a
console.log(obj || 200);        //obj
</script>

五、

三元表达式扩展

var a=6;
1==a?console.log("a是1"):2==a?console.log("a是2"):3==a?console.log("a是3"):console.log("a不是1,2,3");

形如以上表达式,找到第一个与第二个问号之间的冒号,将其分开:

1==a?console.log('a是1')
2==a?console.log("a是2"):3==a?console.log("a是3"):console.log("a不是1,2,3");

此时判断上半部分 a 不为 1 进行下半部分判断:

再将其分开:

2==a?console.log("a是2")
3==a?console.log("a是3"):console.log("a不是1,2,3");

此时判断上半部分 a 不为 2 进行下半部分判断。

此时判断下半部分 a 不为 3 输出 “不为1,2,3”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值