JavaScript — 逻辑运算符、关系运算符、相等运算符、条件运算符

目录

一、逻辑运算符

  1. ! 非

  2. && 与

  3. || 或

  4. && || 非布尔值的情况

        (1).与运算

        (2).或运算

二、关系运算符

  1. > 大于号

  2. >= 大于等于

  3. < 小于号

  4. <= 小于等于

  5.非数值的情况

三、相等运算符

  1. ==

  2. !=

  3. ===

  4. !== 

四、条件运算符

一、逻辑运算符

JS中提供了三种逻辑运算符

  1. ! 非

        !可以用来对一个值进行非运算,所谓非运算就是对一个布尔值进行取反操作

                true 变 false  false 变 true

        如果对非布尔值进行运算,则会将其转换为布尔值然后取反,所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值               

例如:

let b=10;
b = !!b    //b=true

            可以为一个任意的数据类型取两次反来将其转换为布尔值,原理和Boolean()函数一样

  2. && 与

        &&可以对符号两侧的值进行与运算

            运算规则:

                两个值中只要有一个值为false,则结果为false;只有两个值都为true时才会返回true

        JS中的“与”属于短路的与,如果第一个值为false,则不会看第二个值;第一个值为true,会检查第二个值。

 

        也可以在一行代码上串联多个值,第一个假值会被返回。如果所有的值都是真值,最后一个值将会被返回。

alert( 1 && 2 && null && 3 ); // null
alert( 1 && 2 && 3 ); // 3,最后一个值

 

  3. || 或

        ||可以对符号两侧的值进行或运算

                两个值中只要有一个true就返回true,如果两个值都为false则返回false

        JS中的或属于短路的或,如果第一个值为true,则不会检查第二个值;第一个值为false,会检查第二个值。

        一个或运算 || 的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值。

alert( 1 || 0 ); // 1(1 是真值)

alert( null || 1 ); // 1(1 是第一个真值)
alert( null || 0 || 1 ); // 1(第一个真值)

alert( undefined || null || 0 ); // 0(都是假值,返回最后一个值)

 

  4. && || 非布尔值的情况

        对于非布尔值进行与或运算时,会将其转换为布尔值,然后再运算,并且返回原值

 

        (1).与运算

        如果第一个值为true,则必然返回第二个值

        如果第一个值为false,则直接返回第一个值

//true && true
//与运算:如果两个值都为true,则返回后边的
var result = 5 && 6;    //返回6

//与运算:如果两个值中有false,则返回靠前的false
//false && true
result = 0 && 2;    //返回0
result = 2 && 0;    //返回2
//false&&false
result = NaN && 0;  //返回NaN
result = 0 && NaN;  //返回0

 

        (2).或运算

        如果第一个值为true,则直接返回第一个值

        如果第一个值为false,则直接返回第二个值

//true||true
//如果第一个值为true,则直接返回第一个值
result = 2 || 1;    //返回2
result = 2 || NaN    //返回2

//如果第一个值为false,则直接返回第二个值
result = NaN || 1;  //返回1
result = NaN || 0;  //返回0

 

注意:与运算 && 的优先级比 || 高!!!

 

二、关系运算符

        通过关系运算符可以比较两个值之间的大小关系,如果关系成立会返回true,如果关系不成立则返回false

  1. > 大于号

        -判断符号左侧的值是否大于右侧的值

        -如果关系成立,返回true,如果关系不成立则返回false

  2. >= 大于等于

        -判断符号左侧的值是否大于或等于右侧的值

  3. < 小于号

        -判断符号左侧的值是否小于右侧的值

  4. <= 小于等于

        -判断符号左侧的值是否小于或等于右侧的值

  5.非数值的情况

        对于非数值进行比较时,回将其转换为数字之后再进行比较,如果符号两侧的值都是字符串时,不会将其转换为数字进行比较,而会分别比较字符串中字符的Unicode编码

console.log(1 > true);//false
console.log(1 >= true); //true
console.log(1 > '0');   //true
console.log(10 > null); //true

        任何值和NaN做任何比较都是false

console.log(10 <= "hello"); //false

        比较两个字符串时,比较的是字符串的字符编码

console.log('a'<'b');   //true

        比较字符编码时是一位一位进行比较;如果两位一样,则比较下一位。可以借用它来对英文进行排序

console.log('abc'<'b'); //true

        如果比较两个字符串型的数字,可能会得到不可预期的结果。比较两个字符串型的数字时,一定要注意转型!!!

三、相等运算符

        相等运算符用来比较两个值是否相等,如果相等会返回true,否则返回false

  1. ==

    使用 == 来做相等运算,当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后再比较     

console.log(a == 4);    //false
console.log('1' == 1);    //true
console.log('1' == true);    //true
console.log(null == 0);    //false

        undefined衍生自null,所以这两个值做相等判断时,会返回true

console.log(undefined == null);

        NaN不和任何值相等,包括它本身

console(NaN == NaN);    //false

        注意:检查一个值是否是NaN,可以通过 isNaN() 函数来判断,如果该值是NaN返回true,否则返回false

  2. !=

    不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false

    使用!=来做不相等运算

    不相等也会对变量进行自动的类型转换

console.log(10 != 5);   //true
console.log(10 != 10);  //false
console.log('abcd' != 'abcd');  //false
console.log('1' != 1);  //false

  3. ===

    ===用来判断两个值是否全等,它和相等类似,不同的是它不做类型转换

    如果两个值的类型不同,直接返回false

console.log('123'===123);   //false
console.log(null == undefined);     //true
console.log(null === undefined);    //false

  4. !== 

    !== 用来判断两个值是否不全等,和不等类似,不同的是它不做类型转换

    如果两个值的类型不同,直接返回true

console.log(1 !== '1'); //true

四、条件运算符

        条件运算符也叫三元运算符

        语法:

                条件表达式 ? 语句1 : 语句2;

        执行的流程:

        条件运算符在执行时,首先对条件表达式进行求值

            如果该值为true,则执行语句1,并返回执行结果

            如果该值为false,则执行语句2,并返回执行结果

        如果条件表达式的求值结果是一个非布尔值,会将其转换为布尔值,然后再运算

let a=10;
let b=20;
let c=21;
//获取a和b中的最大值
let max = a > b ? a : b;
//获取abc中的最大值
max = max > c ? max : c;
//套娃写法,不推荐,不方便阅读
max = a > b ? (a > c ? a : c) : (b > c ? b : c);

    原文作者:吃不到棒棒糖的小熊
    原文地址: https://blog.csdn.net/m0_59897687/article/details/122701735
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞