一元操作符:
就是只能操作一个值的符号
- ++a
- –a
- +a
- -a
递增和递减操作符:
++和–:
递增和递减操作符遵循以下规则:
- 对于字符串:
假如字符串有数字,则先将字符串转为数字值,再执行加减1的操作,此时字符串变为数值变量
假如没有数字,则将字符串变量变成NaN,此时字符串变为数值变量。 - 对于布尔值,先把true/false转为1/0,然后再执行加减1的操作,此时布尔值变为数值变量。
- 对于对象,先调用对象的valueOf()方法,然后对其应用上述规则,如果结果是NaN,则再调用toString()方法后再应用上述规则,对象变量变为数值变量。
例如:
var o={
valueof:function(){
return -1;
}
};
o--; //值变为-2;
一元加和减操作符
在对于非数字类型应用一元操作符时,该操作符会像Number()转型函数一样对这个值执行转换。
示例:
var s1="01";
var s2="1.1";
var s3="z";
var b=false;
var f=1.1;
var o={
valueOf:function(){
return -1;
}
};
s1=-s1;
s2=-s2;
s3=+s3;
b=+b;
f=-f;
o=-o;
console.log(s1); //-1
console.log(s2); //-1.1
console.log(s3); //NaN
console.log(b); //0
console.log(f); //-1.1
console.log(o); //1
布尔操作符
有三种:与、或、非
逻辑非:
- 如果操作数是一个对象,返回false;
- 如果操作数是一个空字符串,返回true;
- 如果操作数是一个非空字符串,返回false;
- 如果操作数是数值0,返回true;
- 如果操作数是任意非0数值,返回false;
- 如果操作数是null,返回true;
- 如果操作数是NaN,返回true;
- 如果操作数是undefined,返回true;
alert(!false);//true
alert(!"blue");//false
alert(!0);//true
alert(!NaN);//true
alert(!"");//true
alert(!12345);//false
逻辑与(&&)
- 只要有一个false,那就一定是false,假如第一个是false,则第二个数不再进行判断
- 不能再逻辑与中使用未定义的值
- 如果第一个操作数是对象,则返回第二个操作数
- 如果第二个数是对象,只有在第一个数为真的时候才返回第二个对象
- 如果两个操作数都是对象,则返回第二个数
- 如果第一个数是null,NaN,undefined,则返回null,NaN,undefined
逻辑或(||)
- 如果第一个操作数是对象,则返回第一个操作数
- 如果第一个操作数是false,则返回第二个操作数
- 如果两个操作数都是对象,则返回第一个数
- 如果两个数都是null,NaN,undefined,则返回null,NaN,undefined