• google chrome调试


    1,同样的代码使用firefox运行不会报错,正常运行。

    2,同样的代码使用google chrome 有时候会误报网页?

    如下:代码可以在 firfox edge正常运行,在chrome  opera 运行报错。应该是兼容性问题。

    代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script>
             function BinaryTree(){
                //初始化节点对象,包括3个属性
                var Node=function(key){
                    this.key=key;
                    this.left=null;
                    this.right=null;
                };

                var root=null;//根节点

                //给当前节点添加左右孩子。
                var insertNode = function(node,newNode){
                    //如果节点小于父节点,放在左边作为左孩子
                    if (newNode.key<node.key) {
                        if (node.left===null) {
                            node.left=newNode;
                        }else{
                            insertNode(node.left,newNode);
                        }
                        //否则就放右边,作为右孩子
                    }else{
                        if (node.right===null) {
                            node.right=newNode;
                        }else{
                            //递归,继续添加左右孩子节点。
                            insertNode(node.right,newNode);
                        }
                    }
                }

                //判断根节点是否为空。
                this.insert=function(key){
                    var newNode=new Node(key);
                    if (root===null) {
                        root=newNode;
                    }else{
                        //给当前节点添加左右孩子节点。
                        insertNode(root,newNode);
                    }
                }
             }

             var nodes=[8,3,10,1,6,14,4,7,13];
             var BinaryTree=new BinaryTree();
             nodes.forEach(function(key){  //控制台,鼠标悬停key未定义,也不会往里面执行代码
                BinaryTree.insert(key);
             });
        </script>
    </body>
    </html>

    ====================

    逻辑操作符  &&与  ||或  !非
    一,&&与
    只要有一个条件不成立就返回 false。
    只要有一个条件不成立就返回 false。从第一个开始,一旦遇到false,就不会继续往下读取,直接返回当前操作数。

    在有一个操作数不是返回布尔值的情况,那么逻辑与操作就不一定返回值。此时遵循以下几个规则:

    1,如果第一个操作隐式类型转换后为true,则返回第二个操作数
        var a=10;
        var b=20;
        var c=30;
        var d;
        var name=null;
        var str="abc";
        console.log(a<b && a<c);  /*全部true,返回最后一个true*/
        console.log(str && c);  /*30 */
        /*str="abc" 这里有一个隐式类型转换 Boolean(str)返回值:true。
         Boolean(c)=Boolean(30) 隐式类型转换 返回值:true。返回第二个值,这里的值是30*/

         var a ,b;
         console.log(null && undefined && 0); // 返回0 隐式类型转换全部false,则返回最后一个操作数。
         console.log(a && b); //返回undefined

        console.log( c && 50 && str);  /*abc*/
        /*隐式类型转换,Boolean(c)返回值:true。
        饮食类型转换 Boolean(str) 返回值:true。 如果&&与中全部值返回true,则返回最后一个true对象没有进行隐式类型转换的值*/

    2,如果第一个操作数隐式类型转换值为:false。则返回第一个操作数,指的是第一个返回值为:false,如果返回值为:true则跳过。
        var a=10;
        var b=20;
        var c=30;
       console.log(a>c && 88 && a>b); /*返回值:false  这里a>c的返回值就是:false*/
       console.log(a>c && 88 && a>b); /*返回值:false  这里a>c是第一个返回值false的对象*/
       console.log(0 && 88);  /*返回0 ,隐式转换Boolean(0)返回值:false。所以返回值是0。返回第一个false的对象的原值。*/

    3,如果有一个操作数null,则返回null。
       console.log("" && 88 && a<b);    /*返回空值,在控制台中就是一个空格*/

    4,如果有一个操作数为:undefined,则返回undefined。
        var d;
       console.log(a<c && 88 && d);  /*d  这里的d在上文中没有进行定义赋值,所以返回d*/

    5,如果有一个操作数为:NaN,则返回NaN。
        var str="abc";
       console.log( a<c && a+str && 88);  /*88   这里Boolean(a+str)  这里的+变成连字符,所以返回值为:true。所有经过隐式转换返回值都为:true,则值默认返回最后一个原值 88。*/

       console.log( a<c && a*str && 88); /*NaN   Boolean(a*str) a=10 str="abc" 数字和字符串相乘,返回值:NaN非数值*/

    6,&&与 可以操作任意类型的数据

  • 相关阅读:
    census 安全处理模式
    基于squid 暴露k8s 服务
    nginx 动态模块问题
    juicefs 多s3 bucket 使用
    k8s 数据卷需要很长时间才能挂载成功
    一种基于s3 管理haproxy 配置的模式
    WebSub 互联网分布式\订阅标准
    maven 多模块父模块问题deploy 问题
    nginx 作为s3 的gateway
    juicefs 单机试用
  • 原文地址:https://www.cnblogs.com/Knowledge-is-infinite/p/10798573.html
Copyright © 2020-2023  润新知