zoukankan      html  css  js  c++  java
  • JS知识整理随笔(2) 逻辑操作符和算数操作符以及其它操作符

        var num1=10,num2="c",num3="5";
        console.log(num1*num2);
        console.log(num1*num3);//隐式类型转换

    递增和递减

    递增(递减同理)

    ++a与a++都是对a进行递增操作

    区别

    ++a先返回递增之后的a的值

    a++先返回a的原值,在返回递增之后的值

     var num1=10,num2=5,num3=++num1+num2; //++num1 num1=num1+1
        console.log(num1);
        console.log(num3);

     var num1=10,num2=5,num3=num1++-num2; 
        console.log(num1);
        console.log(num3);

      var x1=20,x2=30,x3=--x1+x2--;
        console.log(x1);
        console.log(x2);
        console.log(x3);// 19+30=49;

    a++ 的含义是先赋值后相加,如 b=a++; 先将a的值赋给b,然后a再加上1;++a的含义是先相加后赋值,如 b=++a 先将a加上1,然后再把加上1的a赋给b.
    int a=1;
    b=a++; ---> b=a ,b=1;a+1,a=2;
    b=++a;--->b=a+1,b=2; 此时的a已经是2

     

    赋值操作符

    简单赋值:=;

    复合赋值:+=  -=  *=  %=  /=

    比较操作符

    ==:值是否相等

    ===:比较值是否相等同时比较类型是否相等

    !=:不相等,比较值是否不相等

    !==:不相等,比较值得同时比较数据类型是否不相等

    返回值:boolean

    三元操作符

    语法

    条件 ? 执行代码1:执行代码2

    说明

    可代替简单的if语句,如果条件成立,执行代码1,否则执行代码2

        var soce=85;
        var result=(soce>=60)?"及格":"不及格"
        console.log(result);

    逻辑操作符

    • &&  与(只要一个条件不成立,返回false)
    • ||    或  (只要一个条件成立,返回true)
    • !     非

    逻辑与(并且)

    说明

    在有一个操作数不是布尔值得情况下,逻辑与操作就不一定返回值,它遵循规则

    • 如果第一个操作隐式类型装换后为true,则返回第二个操作数
    • 如果第一个操作数隐式类型转换后为false,则返回第一个操作数
    • 有一个是null则返回null
    • 有一个是NaN就返回NaN
    • 有一个是undefind就返回undefind
         var num1=10,
             num2=20,
             num3=30,
             str="hello",
             n=null,
             m,
             bool=true;
    
    //所有条件都为true才返回true  有一个false就返回false
    console.log(num1<num2 && num2<num3);//true true   /true
    console.log(num1<num2 && num2===num3)  //true  false  /false
    console.log(num2<num3 && num3>num1 && bool) //true true true /true
    
    //在操作数不是布尔值的情况
    
    //1、如果第一个操作数隐式类型装换后为true 则返回第二个操作数
    console.log(str && num3);  //所有字符串除了"" 转换为Boolean都是true  /30
    console.log(80 && 55)  //所有数字除0 转换为Boolean都是true  /55
    console.log("hello" && 65 && "abc") //true   true true  /abc
    
    
    //2、如果第一个操作数隐式类型装换后为false 则返回第一个操作数
    console.log(0 && 88) //false true  /0
    console.log("" && 0 && 30>20) //false false true  / ""
    
    
    //3、如果有一个操作是null 则返回null
    //4、如果有一个操作是NaN 则返回NaN
    //5、如果有一个操作是undefined   则返回undefined
    console.log(n && num3) //null  true    /null
    console.log(33*"abc" && 55)  //NaN  true   /NaN
    console.log(m && bool) //undefined  true   /undefined 

    逻辑或

    • 如果第一个操作数隐式类型转换后为true,则返回第一个操作数
    • 如果第一个操作数隐式类型转换后为false,则返回第二个操作数
    • 如果两个操作数是null则返回null
    • 如果两个操作数都是NaN、则返回NaN
    • 如果两个操作数都是undefined,则返回undefined
    //只要一个条件成立就返回true
    console.log(55>88  || 33<66) //false true /true
    console.log(55!="55" || 88==="88") //false (parseInt("55"))   false /false
    
    //在有一个操作数不是布尔值的情况下
    
    //1、如果第一个操作数隐式类型转换后为true 则返回第一操作数
    console.log("hello" || 0) //true    /hello
    console.log(99 || 0 || "abc") //true false true  //99
    
    
    //2、如果第一个操作数隐式类型转换后为false则返回第二个操作数
    console.log(0 || 99) //false true  /99

    逻辑非

    说明

    • 无论操作数是什么数据类型,逻辑非都会返回一个布尔值
    • ! !同时使用两个逻辑非操作符使   
      •   第一个逻辑非操作基于无论什么操作数都返回一个布尔值
      •        第二逻辑非则对该布尔值求反
  • 相关阅读:
    [转]手工实现RTTI
    小楫轻舟
    百年孤独
    The power of now
    [转帖]Android平台下OpenGL初步
    设计模式六大原则(5):迪米特法则
    设计模式六大原则(4):接口隔离原则
    设计模式六大原则(3):依赖倒置原则
    设计模式六大原则(1):单一职责原则
    设计模式六大原则(2):里氏替换原则
  • 原文地址:https://www.cnblogs.com/zry2510/p/7093382.html
Copyright © 2011-2022 走看看