JavaScript常用运算符简介
运算符也被称为操作符,是用于实现赋值,比较和执行算数运算等功能的符号.JavaScript中常用的运算符有:算数运算符、递增和递减运算符、比较运算符、逻辑运算符、赋值运算符。
一、算术运算符
概念:算术运算符使用的符号,用于执行两个变量或值的算算术运算
算术符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模(取余) |
注意:
- 取余运算符的主要用途
余数为0,说明这个数能被整除。 - 算术运算符的优先级
先乘除,后加减,有小括号先算小括号里面的
例如:
//算术运算符,浮点数运算会有问题
console.log(1 + 2);
console.log(1 - 2);
console.log(1 * 2);
console.log(1 / 2);
console.log(3 % 2); //取余(取模)
console.log(3 % 5); //结果为3
//浮点数在算术运算符里面会有问题
console.log(0.2 + 0.3);
console.log(0.07 * 100); //7.000000000000001
//不能直接拿着浮点数进行相比较是否相等
var num = 0.1 + 0.2;
console.log(num == 0.3); //false
//表达式、返回值
console.log(1 + 1); //2 就是返回值
var num = 1 + 1; //在程序里面2 = 1 + 1,右边表达式计算完返回给左边
console.log(num);
二、递增和递减运算符
需要反复给数字变量加或减去1,可以使用递增(++)和递减(–)运算符完成。在JavaScript中,递增(++)和递减(–)既可以放在变量前面又可以放在变量后面。放在变量前面时,称为前置递增(递减)运算符,放在变量后面,称为后置递增(递减)运算符。递增和递减运算符必须和变量配合使用。
- 前置递增(递减)运算符
比如++num就表示前置递增,就是自加1,类似于num = num + 1,但是++num写起来更简单。前置递增先自加1,后返回值,参与运算。递减和递增类似。
例如:
//前置递增运算符,++写在变量前面,就是自加1
var age = 10;
++age; //类似于age = age + 1;
console.log(age); //11
//先自加1,后返回值
var p = 10;
console.log(++p + 10); //21
- 后置递增运算符
比如num++表示后置递增,它也是自加1。但先返回原值,后自加1,不参与运算。
例如:
//后置递增,也是自加1.
var num = 10;
num++;
console.log(num); //11
//先返回原值,后自加1
var p = 10;
console.log(p++ + 10); //20
console.log(p); //p=11
- 前置递增和后置递增的小结
①变量都自加1
②单独使用时,运行结果一样
③与其他代码连用时,执行结果会不同。
④后置:先原值运算,后自加(先人后己),开发大多使用后置。
⑤前置:先自加,后运算(先己后人)
案例:
var a = 10;
++a; //前置递增,先自加1,在返回值 ++a=11,a=11
var b = ++a + 2; //++a = 11 + 1
console.log(b); //b=14
var c = 10;
c++; //后置递增,先返回值,在自加1 c++ = 10, c=11
var d = c++ + 2; //c++ = 11,c=12
console.log(d); //d=13
var e = 10;
var f = e++ + ++e; //e++ = 10,e=11;++e = 11 + 1
console.log(f); //f=10+12=22
三、比较运算符
概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果。
运算符名称 | 说明 |
---|---|
> | 大于号 |
< | 小于号 |
>= | 大于等于号(大于或等于) |
<= | 小于等于号(小于或等于) |
== | 判等号(会转换数据类型) |
!= | 不等号 |
=== 或 !== | 全等 要求值和数据类型都一致 |
例如:
//比较运算符
console.log(2 > 3);//2大于3不成立,false
console.log(1 < 2);//1小于2成立,true
//在程序里面 == 是判断号,默认是数字型,会把字符串类型转换为数字型
console.log(18 == '18');//true
console.log('lynn' == 'EvenWong'); //==两边字符串长度不等,false
console.log(2 >= 3); //false
console.log(2 <= 3); //true
//!= 不等号
console.log(2 != 3); //true
console.log('lynn' != 'even'); //true
//=== !== 全等号 值和数据类型要一致
console.log(18 === '18'); //false
console.log('asd' === 'asd'); //true
四、逻辑运算符
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,开发中多用于多个条件的判断。
逻辑运算符 | 说明 |
---|---|
&& | “逻辑与”,简称“与” and (两边都是真结果才为真) |
ll | “逻辑或”,简称“或”or (两边都为假结果才为假) |
!(取反符) | “逻辑非”,简称“非”not (取一个布尔值相反的值) |
- 短路运算(逻辑中断)
原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。分为逻辑与短路运算和逻辑或短路运算。
-
逻辑与短路运算
语法:表达式1 && 表达式2
思路:如果表达式1的值为真,则返回表达式2;如果表达式1的值为假,则返回表达式1 -
逻辑或短路运算
语法:表达式1 || 表达式2
思路:如果表达式1结果为真,则返回表达式1;如果表达式1为假,则返回表达式2
例如:
//逻辑运算符
//逻辑与“&&” and,两侧都为真,结果才是真,只要有一侧为假,结果就为假
console.log(3 > 5 && 3 < 5); //false
console.log(3 > 2 && 3 < 5); //true
//逻辑或“||” or,两侧都为假,结果才为假,只要有一侧为真,结果就为真
console.log(3 > 5 || 3 > 2); //true
console.log(3 > 5 || 3 > 6); //false
//逻辑非“!” not
console.log(!true); //false
//短路运算(逻辑中断)
//逻辑与短路运算:如果表达式1的值为真,则返回表达式2的值;如果表达式1的值为假,则返回表达式1的值
console.log(123 && 456); //结果为456
console.log(0 && 234); //结果为0
console.log(0 && 1 + 2 && 456 * 123456); //结果为0
//逻辑或短路运算:如果表达式1为真,则返回表达式1;如果表达式1为假,则返回表达式2
console.log(123 || 456); //结果为123
console.log(0 || 123 || 456 * 123); //结果为123
//逻辑中断会影响程序的运行结果
var num = 0;
console.log(123 || num++); //结果为123
console.log(num); //num=0
//逻辑运算符练习
var num = 7;
var str = '我爱你~中国~'; //str.length=7
console.log(num > 5 && str.length >= num); //true
console.log(num < 5 && str.length >= num); //false
console.log(!(num < 10)); //false
console.log(!(num < 10 || str.length == num)); //false
五、赋值运算符
概念:用来把数据赋值给变量的运算符
赋值运算符 | 说明及案例 |
---|---|
= | 直接赋值 如:var userName=”我是值” |
+=、-= | 加、减一个数后再赋值 如:var age=10;age+=6; //age=16 |
*=、/=、%= | 乘、除、取余后再赋值 如:var age=2;age*=3; //age=6 |
例子:
//赋值运算符
var num = 10;
num += 2;//num = num + 2;每次自加2
console.log(num); //num=12
var age = 2;
age *= 5; //age= age * 5
console.log(age); //age=10
运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++、–、! |
3 | 算术运算符 | 先*、/、%后+、- |
4 | 关系运算符 | >、>=、<、<= |
5 | 相等运算符 | == ,!= , === ,!== |
6 | 逻辑运算符 | 先&&后ll |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
//运算符优先级
//1、小括号()=false,2、一元运算符!()=true,3、关系运算符4>=6 fasle
//4、相等运算符!=,true 5、逻辑与&& true 6、逻辑或
console.log( 4 >= 6 || '人' != '阿凡达' && !( 12 * 2 == 144 ) && true ); //结果为true
var num = 10;
//1、小括号()='22', 2、算术运算符/ 3、相等运算符==、=== 4、逻辑与
console.log( 5 == num / 2 && ( 2 + 2 * num ).toString() === '22'); //结果为true
var a = 3 > 5 && 2 < 7 && 3 == 4;
console.log(a); //a=false
var b = 3 <= 4 || 3 > 1 || 3 != '2';
console.log(b); //b=true
var c = 2 === '2';
console.log(c); //c=false
var d = !c || b && a;
console.log(d); //d=true