JS运算符与表达式
一元操作符
-
++ --
var age=29; var age=29; ++age;//30 var num=++age;//先+1,再赋值,num=30 age++;//31 var num=++age;//先赋值,后+1,num=29
二元操作符
- 算术操作符
+,-,*,/,%
var num=3+4;
判断操作
- 关系操作符
,>,<,>=,<=
var result=6>4;
alert(result);//true
- 相等判断操作符
==,!=
var num=4; var num="4"//相等操作时可将字符串转化为数值
num==4;//true
0==false;//true,false转化为0,true转化为1
2==true;//false
‘’==0;//true,空字符转化为0
===全等判断,!==不全等判断
var num='4';
4==='4';//false
4!=='4';//true
逻辑操作符
-
!非,取反
var flag=true;
aler(!flag);//false
alter(!0);//true
alter(![]);false//没搞明白
alter(!‘’);true
两个“非”可取得变量的布尔值
alter(!![]);//true
alter(!!‘’);//false -
&&(二元)
第一个布尔值为true,取第二个操作数;第一个布尔值为false,取第一个操作数
var result=true&&false;
var result=true&&3;//3
var result=1&&3;//3
var result=[]&&‘’;//‘’
var result=false&&3;//false
var result=‘’&&3;//‘’
var result=null&&3;//null
短路:如果第一个值false,取第一个值,第二个值不进行操作
var=0;
var result=‘’&&num++;//num=0 -
||
第一个布尔值为true,取第一个操作数;第一个布尔值为false,取第二个操作数
var result=true||false;
var result=true||3;//true
var result=1||3;//1
var result=[]||‘’;//[]
var result=false||3;//3
var result=‘’||3;//3
var result=null||3;//3
短路:如果第一个值true,取第一个值,第二个值不进行操作
var=0;
var result=3||num++;//num=0
赋值操作符
- =
var num=5;
num=num+5; 等价于 num+=5;
条件操作符
- ?
布尔表达式?表达式一:表达式二;
布尔表达式true ,值取表达式一
布尔表达式false,值取表达式二
var sex=true
var result=sex? '男':'女';
逗号操作符
- ,简化操作
var num1=5,num2=10,num3=20;
对象操作符
-
new 获取某个对象的实例
var cat=new Object() -
delet 用于删除对象的属性
-
. []
通过.和[]获取一个值得属性
-
instanceof 判断某个变量是否是某个对象的实例
-
in 判断某个属性是否在某个对象中
位操作符
- ~
- & 数值转化为二进制,都为1时才取1,再转化为十进制
var num=8;
num &4;//0
8=1 0 0 0
4=0 1 0 0
8&4=0 0 0 0 - |
- ^
- <<转化为二进制后左移1
var num=2;//2=0 0 1 0
num<<1;//4,<<1=0 1 0 0
num<<2;//8,<<2=1 0 0 0 - >>
- >>>
操作符优先级
var num=
4+0||3;//4,+优先级高于||
!false&&[];//[],先取非,再&&
4>3?5:7+10;//5,条件操作符最低
4==‘4’ && 3;//3,先取相等操作,再进行&&
(4+3)||1;加括号可以提高优先级