javascript中&&运算符和||运算符的使用

前言

我们在前端开发中,&&运算符和||运算符是使用率和频繁度比较高的,&&运算符和||运算符的功能特别强大,想成为一名优秀的前端工程师,&&运算符和||运算符是必不可少的,但是很多前端工程师(刚入门的小白【包括小编本身】)对于&&运算符和||运算符的使用率极为低下,之前小编在学校开发一些项目的时候根本就没有用到过,因为我们已经被传统概念束缚了。我们对于&&运算符和||运算符的理解是这样的:

&&运算符

  1. &&运算符左边的结果和右边的结果同时为真时,结果真。
  2. &&运算符左边的结果和右边的结果同时为假时,结果为假。
  3. &&运算符左边的结果和右边的结果有一个为假时,结果为假。  

  总结:同真为真,否则为假。

||运算符

  1. ||运算符左边的结果和右边的结果同时为真,结果为真。
  2. ||运算符左边的结果和右边的结果有一个为假时,结果为真。
  3. ||运算符左边的结果和右边的结果同时为假时,结果为假。

  总结:同假为假,否则为真。

但是实际上真的是这样吗?,我们看下关于&&运算符的小demo

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            let result=1&&2;
            console.log(result);

        </script>
    </body>
</html>

你想的结果是不是返回true呀!小编一开始也是和你们一样,但是在学习中实践了一下,并非这样,这里请允许小编打个小广告,各位同行可以在腾讯课堂和bilibili搜索渡一教育,良心推荐,说实在里面的老师讲课讲的非常优秀,有兴趣的同行可以去尝试一下,扯远了,我们回归正题,实际上返回的结果是2。

||运算符的小demo

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            var result=1||0
            console.log(result);

        </script>
    </body>
</html>

结果:

是不是很惊讶!,天哪!出乎我的意料,两次的结果返回值都不是true或者false,好了小编也不和你们卖关子了。直接进入正题。

本章目标

  1. 学会使用&&运算符和||运算符
  2. 通过案例加强对&&运算符和||运算符的理解

案例实践(通过加载json渲染数据)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <stle type="text/css">
            #myTab{
                width: 800px;
                margin: 0 auto;
            }

        </style>
    </head>
    <body>
        <table border="1" cellspacing="0" cellpadding="0" id="myTab">
            <tr>
                <th>编号</th>
                <th>名称</th>
                <th>价格</th>
                <th>状态</th>
            </tr>

        </table>
        <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            //0代表待支付,1代表已支付,2代表已收货,3代表其它
            var  orderArray=[
            {
                id:10001,
                name:‘小米9‘,
                price:1999,
                status:0,
            },
            {
                id:10002,
                name:‘huaweiPro‘,
                price:2999,
                status:1,
            },
            {
                id:10003,
                name:‘小米8‘,
                price:999,
                status:2,
            },
            {
                id:10004,
                name:‘荣耀8X‘,
                price:1399,
                status:3,
            }
            ];
            $("#myTab tr:not(:eq(0))").remove();
            for(var i=0;i<orderArray.length;i++){
                var tr=$("<tr/>");
                var td1=$("<td/>");
                var td2=$("<td/>");
                var td3=$("<td/>");
                var td4=$("<td/>")
                td1.html(orderArray[i].id);
                td2.html(orderArray[i].name);
                td3.html(orderArray[i].price);
                if(orderArray[i].status==0){
                    td4.html("待支付")
                }else if(orderArray[i].status==1){
                    td4.html("已支付")
                }else if(orderArray[i].status==2){
                    td4.html("已收货");
                }else if(orderArray[i].status==3){
                    td4.html("其它")
                }
                tr.append(td1);
                tr.append(td2);
                tr.append(td3);
                tr.append(td4);
                $("#myTab").append(tr);
            }
        </script>
    </body>
</html>

效果图如下:

这是我们没有使用&&运算符和||运算符的结果,接下来我们使用&&运算符和||运算符来简化if...else..if...else语句

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #myTab{
                width: 800px;
                margin: 0 auto;
            }

        </style>
    </head>
    <body>
        <table border="1" cellspacing="0" cellpadding="0" id="myTab">
            <tr>
                <th>编号</th>
                <th>名称</th>
                <th>价格</th>
                <th>状态</th>
            </tr>

        </table>
        <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            //0代表待支付,1代表已支付,2代表已收货,3代表其它
            var  orderArray=[
            {
                id:10001,
                name:‘小米9‘,
                price:1999,
                status:0,
            },
            {
                id:10002,
                name:‘huaweiPro‘,
                price:2999,
                status:1,
            },
            {
                id:10003,
                name:‘小米8‘,
                price:999,
                status:2,
            },
            {
                id:10004,
                name:‘荣耀8X‘,
                price:1399,
                status:3,
            }
            ];
            $("#myTab tr:not(:eq(0))").remove();
            for(var i=0;i<orderArray.length;i++){
                var tr=$("<tr/>");
                var td1=$("<td/>");
                var td2=$("<td/>");
                var td3=$("<td/>");
                var td4=$("<td/>")
                td1.html(orderArray[i].id);
                td2.html(orderArray[i].name);
                td3.html(orderArray[i].price);
                var status=orderArray[i].status== 0 && "待支付" ||orderArray[i].status== 1 && "已支付" ||orderArray[i].status== 2 && "已收货" ||orderArray[i].status== 3 && "其它"
                td4.html(status);
//                if(orderArray[i].status==0){
//                    td4.html("待支付")
//                }else if(orderArray[i].status==1){
//                    td4.html("已支付")
//                }else if(orderArray[i].status==2){
//                    td4.html("已收货");
//                }else{
//                    td4.html("其它")
//                }
                tr.append(td1);
                tr.append(td2);
                tr.append(td3);
                tr.append(td4);
                $("#myTab").append(tr);
            }

        </script>
    </body>
</html>

在这里我们用一句代码解决了if..else..if..else的代码操作,使用了&&运算符和||运算符代替使代码更加简洁方便,当然&&运算符和||运算符的使用不仅仅是这样,总之&&运算符和||运算符的功能特别强大,我们要学会使用。

总结

&&运算符

  1. 先看第一个表达式转换为布尔值的结果,如果为真,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只看第二个表达式的结果就可以返回该表达式的值。
  2. 当第一个表达式的值为false时,直接返回第一个表达式的值,不再往后看。
  3. 如果第一个操作数是对象,则返回第二个操作数。
  4. 如果两个操作数都是对象,则返回第二个操作数。
  5. 如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况才会返回该对象。
  6. 如果一个操作数为null,则返回null。
  7. 如果第一个操作数是NaN,则返回NaN。
  8. 如果第一个操作数是undefined,则返回undefined。

||运算符

  1. 先看第一个表达式转换为布尔值的结果,如果为假,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只看第二个表达式的结果就可以返回该表达式的值。
  2. 当第一个表达式的值为false时,直接返回第二个表达式的值,不再往后看。
  3. 如果第一个操作数是对象,则返回第一个第一个操作数。
  4. 如果第一个操作数的求值结果为false,则返回第二个操作数。
  5. 如果两个操作数都是对象,则返回第一个操作数。
  6. 如果两个操作数都是null,则返回null。
  7. 如果两个操作数都是NaN,则返回NaN。
  8. 如果两个操作数都是undefined,则返回undefined。

   被认定为false的值:false,"",NaN,null,undefined,

如果您觉得本文对您有用,是对于我最大的帮助,您可以点击关注一下。

原文地址:https://www.cnblogs.com/jjgw/p/11109685.html

时间: 2024-11-10 07:41:37

javascript中&&运算符和||运算符的使用的相关文章

JavaScript中的逗号运算符

JavaScript中的逗号运算符(,)是顺序执行两个表达式. expression1, expression2 其中,expression1是任何表达式,expression2是任何表达式. 逗号运算符(,)导致按从

javaScript 中的布尔运算符 &amp;&amp; 和 ||

布尔运算符 && 和 ||的返回结果不一定是布尔值!由此来展开一定的研究及理解. 1.首先先介绍下常见的数据类型转化为bool后的值. (常用地方)在if表达式中,javascript先把条件表达式转换成bool值再进行判断 2.下面来介绍下逻辑与&& 逻辑非|| 的运算后的返回结果 逻辑与 && 由上面结果可以看出.逻辑与&&中,当左侧表达式为 真值,结果则返回右侧表达式:当左侧表达式为 假值,结果则返回左侧表达式: 也就是 var i=&

JavaScript中使用typeof运算符需要注意的几个坑

typeof是一个运算符,它对操作数返回的结果是一个字符串,有6种(只针对ES,不包含HOST环境对象). 1.'undefined'2.'boolean'3.'string'4.'number'5.'object'6.'function' 因为它本身是运算符,它不是函数,使用时没必要加个小括号. typeof用来判断类型,它有几个坑 1. 对null返回是'object',你却不能真正当对象使用. 代码如下: var obj = nullif (typeof obj === 'object')

你真得懂Javascript中的==等于运算符吗?

var i = 2; Number.prototype.valueOf = function() { return i++; }; var a = new Number( 42 ); if (a == 2 && a == 3) { console.log( "Yep, this happened." ); } ============================ "0" == null; // false "0" == und

javascript中关系运算符的说明

决定javascript语法的部分叫做ECMAScript,JavaScript的语法相比较java来说宽松了很多,同时也复杂了很多.在ECMAscript中进行关系符运算时,经常会遇到各种类型转换,大部分的类型转换都是自发的,在应用不同的操作符进行转换时,数据类型的转换又会有所不同. javascript中的关系运算符包括'>','<','>=','<='. 当两个做比较的操作数都是数字的时候,直接进行比较(当然了,这是废话). 当两个操作数都是字符串的时候,比较字符串对应的字符

(4)javascript的运算符以及运算符的优先级

                                运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符等. ( 图片来自于W3School离线手册) 算术运算符案例: <!doctype html> <head> <meta http-equiv="content-type" content="

JavaScript一元运算符、二元运算符和三元运算符

在JavaScript中,运算符可以根据其实际操作数的个数进行分类. JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并称为一个稍复杂的表达式.譬如a*b中的乘法运算符*,就是一个二元运算符.表达式-x中的-运算符就是一个一元运算符,是将操作数x求负值.最后,JavaScript支持一个三元运算符(ternary operator),条件判断运算符?:,它将三个表达式合并成一个表达式. 条件语句?(条件为真)执行语句A:(条件为假)执行语句B

JavaScript中的类型转换(二)

说明: 本篇主要讨论JavaScript中各运算符对运算数进行的类型转换的影响,本文中所提到的对象类型仅指JavaScript预定义的类型和程序员自己实现的对象,不包括宿主环境定义的特殊对象(比如浏览器定义的对象) 上一篇中讨论了JavaScript中原始类型到原始类型的转换,原始类型到对象类型的转换和对象类型到原始类型的转换,这里先提出一个问题 var a = undefined; if(a){ console.log('hello'); }else{ console.log('world')

javascript中运算符的优先级

运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出JavaScript运算符.具有相同优先级的运算符按从左至右的顺序求值. 其中圆括号可用来改变运算符优先级所决定的求值顺序.这意味着圆括号中的表达式应在其用于表达式的其余部分之前全部被求值. z = 78 * (96 + 3 + 45) 在该表达式中有五个运算符: =, *, (), +

JavaScript中“typeof”运算符与“instanceof”运算符的差异

在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了.“typeof”是一元运算符,其后直接跟需要进行类型判断的数据:而“instanceof”是二元运算符,其左侧是需要判断的数据,右侧是用于比较的类型. //typeof是一元运算符: var amount = 108; console.log(typeof amout);//控制台输出“numbe