目录
一、运算符
表达式:由数据本身或者由运算符连接的操作数据组成的形式
运算符分为算数运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、三目运算符
1.算数运算符
+ - * / % ++ --
var a2=5;
var a3=a2++; //先把a2的值赋给a3,然后a2再执行自增
var a4=7;
var a5=++a4; //先让a4的值执行自增,然后再执行赋值
console.log(-3/0); // -Infinity
console.log(NaN==NaN); //false
2.比较运算符
> < >= <= ==(等于) !=(不等于) ===(全等于) !==(不全等于)
== 等于,比较两个值是否相同
=== 全等于,先比较类型,再比较值,两个都相同结果是true
3>'10' 数值和字符串比较,字符串转为数值
'3'>'10' 字符串之间,比较的是首个字符的Unicode码
3>'10a' //false
3<'10a' //false
3=='10a' //false
NaN==NaN //false
NaN和任何值比较(> < >= <= == === )结果都是false
3.逻辑运算符
|| 逻辑或,关联的两个表达式有一个为true结果是true,否则false
&& 逻辑与,关联的两个表达式都是true结果是true,否则false
! 逻辑非,取反
短路逻辑
&& 如果第一个表达式为false,就不再执行第二个表达式
|| 如果第一个表达式为true,就不再执行第二个表达式
短路逻辑不用关注结果是true还是false,重点是看第二个表达式是否执行。
4.位运算符
模拟计算机底层的运算过程,先把数据转为2进制再进行运算,运算完再把结果转为10进制。
1 2 3 4 5 6 7 8
1 10 11 100 101 110 111 1000
& | 按位与,上下两位比较,两者都是1结果1,否则是0 |
| | 按位或,上下两位比较,有一个1结果是1,否则是0 |
^ | 按位异或,上下两位比较,不同是1,相同为0 |
>> | 按位右移,删除末尾的位数 |
<< | 按位左移,在末尾补0 |
// 5<<1
1 0 1 |
1 0 1 0 |
// 9>>1
1 0 0 1 |
1 0 0 | 1
5.赋值运算符
= += -= *= /= %= ...
6.三目运算符
一目运算符 | 由一个运算符连接的一个数据或者表达式 | ++ -- ! |
二目运算符 | 由一个运算符连接的两个数据或者表达式 | |
三目运算符 | 有两个运算符连接的三个数据或者表达式 |
条件表达式 ? 表达式1 : 表达式2
如果条件表达式为true,选择表达式1;如果条件表达式为false,选择执行表达式2
//声明变量保存任意一个年份,判断是否为闰年,使用短路逻辑,如果是闰年打印'闰年'
var year = 2020;
//闰年判断:能被4整除,并且不能被100整除,或者能被400整除
console.log(year%4===0 && year%100!==0 || year%400===0);
(year%4===0 && year%100!==0 || year%400===0) && console.log('闰年');
拓展
alert(); 弹出警示框
prompt(); 弹出提示(输入)框,需要通过变量保存用户输入的值,类型是字符串型,如果取消结果为null
//取余
//整除
console.log(5%3); //2
console.log(3%5); //3
//闰年,能被4,100或400整除
console.log(2021%4);
奇数 偶数
console.log(2%2);
var a1=2;
//自增
a1++;
++a1;
var a2=5;
//先把a2的值赋给a3,然后a2再执行自增
var a3=a2++; //a2=6;a3=5var a4=7;
//先让a4的值执行自增,然后再执行赋值
var a5=++a4; //8 8var n1=3;
//把n1的值赋给n2,然后n1执行自减
var n2=n1--; //3
//先让n1执行自减,然后再赋值给n3
var n3=--n1; //n1=1; n2=3; n3=1console.log('5a'%'3'); //NaN
var a='2';
//先把a的值转为数值
a++; //3
//正负号隐式转换为数值
var b=+'2'+3; //5