1.操作符
表达式:操作符和操作数组成
var a = 3;
1)算术操作符
允许非number类型的操作数进行运算,在运算之前,一般需要先将其它数据类型转换为数字类型在进行运算
1.+ 、+=
var result = 1 + 2;
var result = 1 + true;
var a = 3;
var b +=a; //var b = b + a;
当操作数中出现了字符串,+运算就变成了字符串拼接运算
var result = true + ‘1’;
2.- 、-=
var result = 3 -2;
var result = 3 - true; //2
var result = 3 - ‘a’; //NaN
3.、=
var result = 2 * 3;
4./、/=
var result = 5 / 2;
5.%、%=
var result = 5 % 2;
2)比较操作符
运算结果一般为boolean
1.<
2.<=
3.>
4.>=
5.==等于
将操作数转换为同一数据类型再进行比较
1)基本数据类型的值
2)引用数据类型的值
比较引用数据类型的地址
var a = {name:“terry”}
var b = {name:“terry”}
‘{“name”:“terry”}’ 等于 ‘{“name”:“terry”}’
===全等
先比较两个操作数的数据类型,如果数据类型不一致,直接返回false,当数据类型一致的时候才比较值
1 == ‘1’ //true
1 === ‘1’ //false
------如何比较两个对象的属性是否一致
1.先将对象序列化为json字符串
2.对json字符串进行对比
3)逻辑操作符【短路运算符】
1.&&
返回值不一定是boolean类型
true&&false //false
true&&true //true
var gender = ‘female’
if(gender === 'male'&&age>18){}
对于以上代码,gender === 'male'运算结果为false,整个&&表达式的结果就为false,无需再进行其他运算
var a;
var result = a && 3; //undefined
var result = 3 && al //undefined
var result = "hello world && 3" //3
对于以上代码,“hello world”如果转换为boolean将为true,整个&&表达式的运算结果取决于&&后面的表达式,所以将&&后的结果直接返回
/*var gender = 'female'
var age = 13;
var result = gender == 'male' && age >12;
问:age>!2是否可以执行,如何证明?*/
2.||
var result = true || false; //true有真则真
var result = false|| false;//false同假才假
var result = 1>2|| 'hello' //hello
如上,1>2为false,但是无法确定整个表达式的结果,整个表达式的结果取决于第二个表达式,将其返回即可
var result = 1<2 || 'hello' //true
如上,1<2为true,能确定整个表达式的结果,无需进行接下来的运算
3.!
!true //false
!false //true
!!true //true
将其他数据类型转换为Boolean类型
!“hello” //false
!!“hello” //true
4)三目操作符
表达式1 ? 表达式2 : 表达式3
如果表达式1为真,返回表达式2;如果表达式1为假,返回表达式3
var age = 19;
let result =age > 16 ? “成年人”: “小孩子”
5)一元运算符
1.+
+3 //3
一元加运算符后的操作数如果是其他数据类型,则转换为数字类型
+true //1
2. -
一元减法,负
-3 //-3
-true //-1
-(-true) //1
3.++
var a =3;
var result = a++ + ++a;
console.log(result); //8
console.log(a); //5
result=8
a=5
3. --自减
2.类型转换
1)* ->数字类型
通常在dom中或者是从后端拿到的数据不是纯数字类型
但是需要进行数学运算,
Number(a)
+a
-(-a)
parseInt(a)
parseFloat(a)
2)* ->Boolean
Boolean(a)
!!a
false:null 0 undefined NaN Infinity "" ...
true:{} 1 "hello"
var msg = ""
if(msg){
}
if(exp1){}
exp1可以是任意数据类型,因为js在执行过程中会自动将其转换为Boolean
if(obj !=null){}
if(obj){}
3)*->字符串类型
String(a)
a+""
{grade:"92.5"}
{grade:"91.5"}
{grade:"96"}
“92.5” + "91.5" + "96" /3