一元运算符
注:只能操作一个值的运算符,叫做一元运算符
如:
a++;
++a;
上述两个表达式都是进行+1操作。
a++;
【++后置,先取a的值,然后在进行+1操作。】
++a;
【++前置,先进行+1操作,然后再取a的值。】
a--;
--a;
同理。
例:
var a = 5;
alert(a++); //5
alert(a); //6
alert(++a); //6
alert(a); //6
【注】虽然都是进行+1操作,但是因为取值的时间点不一样,所以结果不一样
关系运算符
>、<、 <= 、>=、相等==、不等!=、全等(恒等)===、不全等(不恒等)!===
关系运算符中操作数为非数字的时候要遵从以下规律:
1、如果两个操作数都是数值,则数值比较。
例:
alert(5>3); //true
2、如果两个操作数都是字符串,则比较两个字符串对应的字符编码值(ASCII码表值)。
例:
alert("abc" > "abd"); //false
alert("a" > "b"); //false
字符串在比较时是逐位进行比较,比较出大小就会终止比较。
3、如果两个操作数有一个是数值,则将另一个转换为数值,再进行比较。
例:
alert(2 > ture); //true
在等于和不等的比较上,如果操作数为非数值,则遵从以下规律:
1、一个操作数为布尔值,则比较之前先将布尔值转换为数值,false转换0,true转换为1;
例:
alert(1 == true); //true
alert(0 == false); //true
2、一个操作数为字符串,则比较之前先将字符串转换为数值,再进行比较。
例:
alert(20 == "20"); // true
alert(20 == "30"); // false
3、一个操作数为NaN,则 == 返回 false ,!== 返回 true,并且,NaN和NaN不等。
例:
alert(20 == NaN); //false
alert(20 != NaN); //true
alert(NaN != NaN); //true
4、在全等和全不等中,只有值和数据类型都相等,才会返回true,否则返回false。
例:
alert(20 === "20"); //false
alert(20 === Number("20")); //true
逻辑运算符
1、 与运算
表达式1 && 表达式2
(只有当两个表达式的结果都为真的时候,与运算的结果才为true)
【短路操作:当表达式1为false的时候,表达式2就不会执行,直接判断整个与运算为false。】
例:
alert(5<3 && alert(a)) //false
//因为5<3 为false, 所以alert(a)就不会执行,就不会报错,而是直接返回false
2、 或运算
表达式1 || 表达式2
(只有当两个表达式的结果都为假的时候,或运算的结果才为false)
【短路操作:当表达式1为true的时候,表达式2就不会执行,直接判断整个表达式为true】
例:
alert( 5>3 || alert(a)); //true
3、 非运算
!表达式
非运算符可以用于任何值,无论这个值是什么数据类型,这个运算符都会返回一个布尔值。 它的流程是:先将这个值转换成布尔值,然后取反。
【非运算遵从以下规律:】
1、如果操作数是一个空字符串,返回true。
// alert(!""); //true
2、如果操作数是一个非空字符串,返回false。
// alert(!"true"); //false
3、如果操作数是0,返回true。
// alert(!0); //true
4、如果操作数是任意非0的数值(包括Infinity),返回false
// alert(!2); //false
// alert(!Infinity); //false
5、如果操作数是NaN,返回true
// alert(!NaN); //true
6、如果操作数是undefined,返回true
// alert(!undefined); //true