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
逻辑非
说明
- 无论操作数是什么数据类型,逻辑非都会返回一个布尔值
- ! !同时使用两个逻辑非操作符使
- 第一个逻辑非操作基于无论什么操作数都返回一个布尔值
- 第二逻辑非则对该布尔值求反