JS 运算符
运算符也叫操作符
通过运算符可以对一个或多个值进行运算,并获取运算结果
比如 typeof就是运算符,可以获得一个值的类型
会将该值的类型以字符串的形式返回
算术运算符
对非Number类型的值进行运算时,会自动转换成Number值再进行计算
任何值与NaN运算都会得到NaN
任何值和字符串相加都会转换为字符串
可以利用这个特点将一个数据转换为string型,加上一个 "" 即可
除了加法都会自动转换成Number
可以利用这一特点为一个值转换为Number
+ 可以对两个值进行加法运算并将结果返回
两个字符串相加会产生拼接效果
- 对两个值相减运算
* 乘
/ 除
% 取模
var a = 123;
var result = typeof a;
console.log(typeof result);
result = true + 1;
retult = true + false;
result = 1 + null;
console.log(result);
result = 1 + NaN;
result = 123 + "1";
result = 100 - "1";
result = 4 * "4"
result = 4 / 4;
result = 9 * 2;
一元运算符
只需要一个操作符
可以把其它数据类型转换为Number型
+ 正号
不会对数值产生任何影响
- 负号
可以对数字进行符号的取反
var a = 123;
a = +a;
a = true;
a = -a;
a = "18";
a = -a;
a = 1 + +"2" + 3;
自增:
通过自增可以使变量在自身的基础上增加1
对于一个变量自增后,原变量的值会立即增加1
分为a++ 和 ++a 两种;无论是哪种都会立即使原变量的值增加1
a++的值等于运行前的值,后增,后运行
++a的值为运行后的值,前增,先运行
自减:
通过自减可以使变量在自身的基础上减1
自减分成a--,--a原理上和自增一样
例题
var n1 = 10;
var n2 = 20;
var n = n1++;
console.log('n=' +n);
console.log('n1=' +n1);
n = ++n1;
console.log('n=' +n);
console.log('n1=' +n1);
n = n2--;
console.log('n=' +n);
console.log('n2=' +n2);
n = --n2;
console.log('n=' +n);
console.log('n2=' +n2);
逻辑运算符
JS中有三种逻辑运算符
! 非
对一个布尔值进行取反操作
两次取反则和原值相同
对非布尔值取反会先将其转换为布尔值再运算
&& 与
可以对&&两侧的值进行与运算并返回结果
只要有一个为false就为false
第一个值为true则会运行第二个表达式
第一个值为false则不会运行第二个表达式
|| 或
对||两侧的值进行与运算并返回结果
第一个值为true则不会运行第二个表达式
第一个值为false则会运行第二个表达式,与&&相反
对于非布尔值进行&&,|| 运算时,会先转换成布尔值再运算
与运算:如果第一个值为true,则返回第二个表达式的值
如果第一个值为false,则直接返回第一个值
或运算:如果第一个值为true,则返回第一个表达式的值
如果第一个值为false,则直接返回第二个值
和与运算相反
var a = true;
a = !a;
console.log(true && false);
a = 1 && 2;
a = 2 && 1;
赋值运算符
=
可以将符号右侧的值赋给符号左侧的变量
+=
a += 1; 等价于 a = a + 5;
-=
a -= 1; 等价于 a = a - 5;
*=
a *= 1; 等价于 a = a * 5;
/=
a /= 1; 等价于 a = a / 5;
%=
a %= 1; 等价于 a = a % 5;
关系运算符
通过关系运算符可以比较两个值之间的大小关系
如果关系成立它会返回true 反之为false
> 大于号
判断符号左侧的值是否大于右侧的
如果关系成立,返回true 反之为false
>=,< , <= 大于或等于,小于,小于或等于
同上
非数值情况:
对于非数值进行比较时,会将其转换为数字然后再比较
如果符号两侧都是字符串,不会转换,会比较字符串的字符编码,一位接一位进行比较
任何值和NaN比较都是false
var a = 1 > 2;
console.log(1 > true);
console.log(1 >= true);
三元运算符
条件运算符也叫三元运算符
语法:
条件表达式 ? 语句1 : 语句2;
执行流程
运算符在执行时,首先对条件表达式求值
如果为true,则执行语句1,返回执行结果
否则执行语句2,返回执行结果
如果条件表达式结果为非布尔值,则会自动转换成布尔值
var a = 10;
var b = 15;
a > b ? console.log(a) : console.log(b);
var max = a > b ? a : b;
运算符的优先级

|