运算符
- 运算符:在一个表达式里面起到运算作用的符号
算数运算符
双目运算符
//如果符号两面都为纯数字,则做加法运算
console.log(1+1); //2
//如果一侧为字符串,则进行字符串的拼接
console.log("1" + 1); //11
//注:除+以外,其他算数运算符都有隐式类型转换
-
*
/
% 取模
- * / %
当算数运算符两侧为纯数字的时候,直接进行运算
console.log(2*5) //10
当一侧为纯数字字符串,纯数字字符串会转换成数字。
console.log("2" * 5) //10
如果符号两侧有一侧是非数字字符串,结果不能正常计算,结果都是NaN
console.log( a * 3); //NaN
单目运算符
单目运算符也称为自增(自减)运算符
- ++
a++ = a+1
a++ 与 ++a 的区别
a++ 是先赋值再运算,不参与本次运算
++a 是先运算后赋值,参与本次运算
var a = 0;
a++;
console.log(a); //a=1 不参与本次运算
++a;
console.log(a); //a=2 参与本次运算a=1 再自加1;
console.log(a++); //a=2 这时a=2 不参与本次运算 运算之后a=3
console.log(++a); //a=4 因为a=3 再加1 所以a=4
练习题:
var k=0;
console.log(k++ + ++k +k +k++); //6
console.log(k); //3
//k++ = 0 这时k=1 ++k =2 这时k=2 k++ =2 运算完成k=3
- – 用法与++一致
条件运算符(三目运算符)
表达式1 ? 表达式2 : 表达式3
执行逻辑 : 如果表达式1为true 返回的是表达式2的结果,否则返回的是表达式3
var a=10;
var b=a?true:false;
var c=3+2?8&&true:0;//5?true:0
console.log(c);//true;
关系运算符
> < == >= <= != === 全等于 !== 全不等于
1.符号两边都是纯数字的时候,直接比较大小
2.如果符号一侧为数字字符串的时候 ,数字字符串会进行隐式类型转换
eg : 1 < "2" // true
3. === 比较结果,类型,内存地址。
4. 如果两侧都为字符串的时候,把字符串首字符转换成ASCII码
逻辑运算符
&& : 与 全真为真,一假则假。
- 如果左边的表达式为真,会继续运算右边的表达式。
- 如果左边的表达式为假,不会继续运算右边的表达式,返回值为左边表达式的值。
- 如果左右都是真时,则返回右边表达式的结果。
- 如果左右都为假时,则返回左边表达式的结果。
console.log(!3);//false;
console.log(!0);//true;
console.log(!-1);//false;
console.log(3&&2);//2
console.log(2&&3);//3
console.log(0&&2);//0
console.log(2&&0);//0
|| : 或 一真为真;
- 当左边的表达式为真时,不会继续运行右边的表达式,直接返回左边的表达式的值。
- 当左边的表达式为假时,会继续运算右边的表达式
- 当左右两边都为真时,返回右边的结果。
- 当左右两边都为假时,返回左边的结果。
如果&& 遇到false 后面的表达式不再执行
如果|| 遇到true 后面的表达式不再执行
! 非
!""===true //非空字符串为true
!0===true //非零数为true
!undefined===true
!null===true
注:
Boolean() 强制类型转换
所有非0数字 --- true;
0 --- false
所有非空字符串 --- true
空字符串 --- false
[ ]数组 、 { }对象 --- true
null \undefine --- false;
位运算符
&(按位与运算) |(按位或) ~(取反运算符) ^(异或) <<(左移位运算符) >>(右移位运算符)
总结
- 单目运算符指的是运算符的左右两边,只有一边有值称之为单目运算符
- 非0即为真
- 比较运算符的表达式返回值为boolean类型。
NaN
NaN : not a number 不是一个数字
仅仅代表不是一个数字,自身与自身不相等,NaN == NaN 返回值是FALSE
isNaN()
判断是否为NaN; 如果是NaN 返回的则是true;
执行逻辑:首先用Number() 转换,如果为NaN 返回的则是true;
isNaN() 相当于 window.isNaN();