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

 

 

逻辑非

说明

  • 无论操作数是什么数据类型,逻辑非都会返回一个布尔值
  • ! !同时使用两个逻辑非操作符使   
    •   第一个逻辑非操作基于无论什么操作数都返回一个布尔值
    •        第二逻辑非则对该布尔值求反

 

posted @ 2017-06-29 11:04  星河mio  阅读(362)  评论(0编辑  收藏  举报