操作符和表达式
/* js操作符汇总 */
一元操作符(++ ,--)
算术操作符(+ ,- ,* ,/,%)
关系操作符(> ,< ,>= ,<=)
相等操作符(== ,!= ,=== ,!==)
逻辑操作符(! ,&& ,||)
赋值操作符(=)
条件操作符(?:)
逗号操作符(,)
对象操作符(new ,delete ,[] ,instanceof ,in)
位操作符(~ ,& ,| ,^ ,<< ,>> ,>>>)
一元操作符(++ ,--)
var age = 29;
++age;//30
age++;//31
var age = 29;
var num = age++;//num = 29,因为`var num = age++`是先使用后`++`的
算术操作符(+ ,- ,* ,/ ,%)
var num = 5 + 6;//11
var num1 = 3%2;//1
关系操作符(> ,< ,>= ,<=)
var result = 6>4;
aler(result);//true
相等操作符(== ,!= ,=== ,!==)
var num = 4;
num == 4;//true
var num = "4";
num == 4;//true
0 == false;//true
2 == true;//false
'' == 0;//true
var num = "4";
num === 4;//false
num !== 4;//true
逻辑操作符(! ,&& ,||)
/* 非:‘!’ */
var flag = true;
alert(!flag);//false
---
alert(!0);//true
alert(![]);//false
alert(!"");true
---
/* 与:‘&&’ (短路的操作,第一个为true,则整个表达式的值为另一个 */
var result = true && false;//false
var result = true && 3;//3
var result = 1 && 3;//3
var result = [] && "";//""
/* 或:‘||’ (短路的操作,如果第一个为true,则值为第一个;否则值为第二个 */
var result = true || 3;//true
var result = 1 || 3;//1
var result = [] || "";//[]
var result = false || 0;//0
var result = "" ||3;//3
var result = null || true;//true
---
var num = 0;
var result = 3 || num++;//3(应该是,待验证!!,经过验证,是正确的!)
赋值操作符(=)
var num = 5;//5
num = mum + 5;//10
mun +=5;//15
操作符(?:)
/*
布尔表达式 ? 值一 : 值二 ;
若‘布尔表达式’的值为true,则上式的值为‘值一’,否则为‘值二’
*/
---
var result;
var sex = true;
if(sex){
result = 'male';
}else{
result = 'female';
}
---
/* 上面的语句可以用条件操作符改写如下 */
var sex = true;
var result = sex ? 'male' : 'female';
逗号操作符(,)
var num1 = 5;
var num2 = 10;
var num3 = 0.5;
/* 上面的三个式子可以用逗号操作符改写如下 */
var num1 = 5,num2 = 10,num3 = 0.5;
对象操作符(new
/ delete
/ .
/ []
/ instanceof
/ in
)
var cat = new Object();//用方法new来定义cat为一个对象
---
var cat = {name:'kitty',age:2};
aler(cat.name);//'kitty'
delet cat.name;
alert(cat.name);//undefined
---
var cat = {name:'kitty',age:2};
alert(cat.name);//'kitty'
alert(cat['name']);//'kitty'
---
var cat = {name:'kitty',age:2};
alert(cat instanceof Object);//true
alert(cat instanceof Number);//false
---
var cat = {name:'kitty',age:2};
alert('name' in cat);//true
alert('run' in cat);//false
位操作符(~,&,|,^,<<,>>,>>>)
这里的位操作符
是针对二进制数字的操作,详情待研究!!!;
var num = 8;
num & 4;//意思是8的二进制数字`1000`和4的二进制数字`0100`对位比较,相同为1,不同为0,结果为0
---
var num = 2;
num <<1;//意思是2的二进制数字`0010`中的‘1’向左移动1位,结果为`0100`即为4
num <<2;//意思是2的二进制数字`0010`中的‘1’向左移动2位,结果为`1000`即为8
操作符优先级
var num = 5 + 4 * 3;//17
4 + 0 || 3;//4
!false && [];//[]
4>3?5:7+10;//5