文章目录
运算符
运算符也叫操作符
通过运算符可以对一个或多个值进行运算
例如typeof
就是一个运算符,可以来获取一个值的类型。
算术运算符
+
-
对两个值进行加法
-
如果对两个字符串进行加法运算,则会拼串。
-
任何的值和字符串做加法运算,都会先转换为然后做拼串操作
a = 10
result = a + 1
console.log(result)// 11
result = 1 + 2
console.log(result)// 3
result = true + 1
console.log(result)// 2
result = true + false
console.log(result)// 1
result = 2 + null
console.log(result)// 2
result = 2 + NaN
console.log(result)// NaN
result = '123' + '456'
console.log(result)//123456
result = 123 + '1'
console.log(result)//1231
// 想想下面两个的输出结果是什么样的
result = 1 + 2 + '3'
result = '1' + 2 + 3
-
可以对两个值进行减法运算,并将结果返回
result = 100 - true // 99
result = 100 - '1' // 99
*
可以对两个值进行乘法运算
result = 2 * 2 //4
result = 2 * '8' //16
result = 2 * undefined // NaN
result = 2 * null // 0
/
可以对两个值进行除法运算
result = 4 / 2 // 2
result = 3 / 2 // 1.5
小结
任何值做 - * / 运算时都会自动转换为Number
作用:做隐式的类型转换
a = '5'
b = a - 0
console.log(a) // '5'
console.log(typeof a) // String
console.log(b) // 5
console.log(typeof b) // Number
%
取模运算,取余数
result = 9 % 3 // 0
result = 9 % 4 // 1
result = 9 % 5 // 4
一元运算符
一元运算符,只需要一个操作数
+
正号
正号不会对数字产生任何影响
a = 123
a = +a // 123
-
负号
- 负号可以对数字进行 负号的取反
a = 123
a = -a // -123
- 对于非Number类型的值,它会先转换为Number,然后再运算
- 可以对一个其他的数据类型使用+,来将其转换为Number
自增
通过自增可以使变量在自身的基础上增加1
a = 1
a = a + 1
console.log(a) // 2
a ++
console.log(a) // 3
自增分为两种,后++(a++),前++(++a)
无论是在前还是后,都会立即使原变量的值自增1。
a++和++a的值不同
a++ 为原值
++a 为原值+1
a = 1
console.log(++a) // 2
console.log(a++) // 2
console.log(a) // 3
自减
通过自减可以使变量在自身的基础上减1
自减分为两种,后-- (a–)和前–(–a)
和自增类似
逻辑运算符
三种逻辑运算符 !
&&
||
,分别叫非、与、或
!
可以用来对一个值进行取非运算
所谓的取非运算就是对一个布尔值进行取反操作
如果对一个值进行两次取反,它不会变化
如果对非布尔值进行取反,则会将其转换为布尔值
a = true
a != a
console.log('a = '+'a) // False
b = 10
b = !b
console.log('b = '+b) // b = false
console.log(typeof b) // boolean
可以将一个值转换为布尔值
&&
可以对符号两侧的值进行与运算并返回结果
只有两个都为true时才为true
result = ture && ture
console.log(result) // ture
result = ture && fales
console.log(result) // fales
如果第一个值是false,则不会继续判断第二个值,直接返回fales
||
可以对符号两侧的值进行或运算并返回结果
只有两个都为false时才为false
result = false && false
console.log(result) // false
result = ture && fales
console.log(result) // true
如果第一个值是true,则不会继续判断第二个值,直接返回true
非布尔值
对于非布尔值进行与、或运算时,会向将其转换为布尔值,然后再运行,并且返回原值
ture && true
两个true时返回后面一个值
result = 1 && 2
console.log(result) // 2
result = 2 && 1
console.log(result) // 1
true && false
如果有错,返回考前错的那个。
result = 0 && 2
console.log(result) // 0
result = 2 && 0
console.log(result) // 0
result = 0 && NaN
console.log(result) // 0
result = NaN && 0
console.log(result) // NaN
true || true
两个都为true,返回前一个true的值
result = 1 && 2
console.log(result) // 1
result = 2 && 1
console.log(result) // 2
false || true
第一个值为false,直接返回第二个值
result = NaN || 1
console.log(result) // 1
result = NaN || 0
console.log(result) // 0
赋值运算符
=
可以将右侧的值赋值给左侧的变量
例子太多了
+=
a = a + 1
// 等价于
a += 1
-=
a = a - 1
// 等价于
a -= 1
关系运算符
通过关系运算符可以比较两个值之间的关系,如果关系成立它会返回true,如果不成立则返回false
>
和>=
略
<
和 <=
略
非数值的情况
result = 1 > true // false
result = 1 >= true // true
相等运算符
相等运算符用来比较两个值是否相等,如果相等会返回true。否则返回false
==
做相等运算
1 == 1 // true
如果左右值类型不同,则会自动进行类型转换,再比较
'1' == 1 // true
undefined 与 null 相等
NaN不于任何值相等
===
在
==
的基础上,字符也需要相等。
'1' === 1 // false
条件运算符
条件运算符也叫三元运算符
语法: 条件表达式?语句1:语句2;
执行流程:条件运算符在执行时,首先对条件表达式进行求值,如果该值为true,则执行语句1,反之则执行条件2。
true?alert('语句1'):alert('语句2'); // 执行alert('语句1')