【12.0】JavaScript之运算符
【零】操作符
- 操作符也称为运算符:例如5+6
- 表达式的组成包含操作数和操作符,表达式会得到一个结果
【一】算数运算符:+
【0】运算符
// + : 加法
1 + 1
// 2
// - : 减法
2 - 1
// 1
// * : 乘法
3 * 3
// 9
// / : 除法
4 / 2
// 2
// (): 优先运算
4 + (2 * 3)
// 10
// % : 取余
8 % 5
// 3
【2】运算顺序
- 先乘除取余,再算加减,有括号先算括号
【3】特殊NaN
- 只要NaN参与运算得到的结果也是NaN
【4】隐式转换
- 隐式转换:null转换成0,undefined转换成NaN等
【二】比较运算符
【1】运算符
- > 大于
- < 小于
- <= 小于等于
- >= 大于等于
- == 相等
- != 不相等
- === 全等 与相等区别在于会判断数据类型
- !== 不全等
【2】特殊NaN
- NaN是Not a Number的缩写,表示一种特殊的浮点数,它与任何数值都不相等,包括自己。
isNaN(NaN) // true
isNaN(Infinity) // false
isNaN(-Infinity) // false
isNaN("hello") // true
isNaN(true) // false
- 在比较两个NaN值时,它们并不严格相等,而是被视为相等(因为JavaScript中的所有NaN值都被视为“不同”)。
- 但是,在非严格比较中,如果两个NaN值同时出现在同一个运算中,则它们被视为相等。
【3】Infinity
-
Infinity是JavaScript中的一个特殊数字,表示正无穷大或负无穷大。
-
它是双精度浮点数类型的最大或最小值。
-
Infinity ===Infinity 其他要根据情况而定
Infinity == Infinity // true
Infinity != Infinity // false
Infinity > Infinity // false
Infinity < Infinity // false
Infinity >= Infinity // true
Infinity <= Infinity // true
- 注意,尽管两个Infinity值在比较中被认为是相等的,但它们并不严格相等。
- 只有在它们都作为右操作数用于逻辑运算时才会被认为是相等的。
- 此外,由于Infinity是一个特殊的数字类型,因此不能使用typeof运算符来检查其类型。
- 相反,可以使用isFinite函数来检查一个值是否有限制:
isFinite(Infinity) // false
isFinite(-Infinity) // false
isFinite(NaN) // false
isFinite(10) // true
【4】null
null >=0
// true
null <=0
// true
null==undefined
// true
【5】字符串
- 字符串是比较字符的编码顺序,从前往后 0-9,a-z,A-Z
【6】比较顺序
- 从前往后比较,前面比较的结果再与后面比较 例如:3>2>1 结果为false
【7】 ==
与 ===
- 当使用"=="比较运算符时,会进行类型转换然后再比较。
- 如果操作数的类型不同,则会尝试将它们转换为相同的类型,然后再进行比较。
- 而使用"==="严格相等运算符时,不会进行类型转换。
- 它要求操作数的值和类型都相同才会返回true。
(1)==
- 弱等于
- 内部自动转换成相同的数据类型比较了
1 == '1';
true
(2)===
- 强等于
- 内部不做类型转换
1 === '1';
false
【三】逻辑运算符
【1】运算符
- && 与
- || 或
- ! 非
【2】结果
- 结果为布尔值,与数学的逻辑运算基本一致
【3】隐式转换
- NaN 0 控制符 null undefined为false。非0 非空 非NaN的数字 非空字符串转化成true
【4】示例
Python | and | or | not |
---|---|---|---|
JavaScript | && | ` |
5 && '5';
// '5'
0 || 1;
// 1
!5 && '5';
// '5'
【四】赋值运算符
- = 等于
- += 加等于 例如: a+=3 等价于 a=a+3 下面基本一致
- -= 减等于
- *= 乘等于
- /= 除等于
- %= 取余等于
- ++ 递加
- -- 递减
【五】一元运算符
【1】++a
- 先增加后赋值
- 先增加后赋值,即先将变量的值加一,然后再返回原来的值,并将其赋值给表达式的右侧变量。
var a = 10;
// undefined
var res2 = ++a;
// undefined
res2
// 12
a
// 11
- 当
++
在前面时 - 先将变量
a
的值加一得到11
- 然后返回原来的值
10
并将其赋值给res2
变量 - 因此
res2
的值为12
【2】a++
- 先赋值后增加
- 先赋值后增加,即先将变量的值赋给表达式的左侧变量,然后再将变量的值加一。
var a = 10;
// undefined
var res1 = a++;
// undefined
res1
// 10
a
// 11
- 当
++
在后面时 - 先将变量
a
的值赋给res1
变量,得到10
- 然后将变量
a
的值加一得到11
- 所以
res1
的值为10
。
【3】--
- 减一操作符,它可以用于减少变量的值。
let a = 10;
console.log(a); // 输出:10
a--;
console.log(a); // 输出:9
let b = "hello";
b--;
// NaN
console.log(b);
// NaN
- 首先声明了一个变量
a
并将其设置为10
。 - 然后我们使用
--
操作符将a
的值减一,因此a
的新值为9
。 - 最后,我们将
--
操作符应用于字符串变量b
,这将导致错误,因为不能从字符串中减去数字。
【六】运算优先级
- () -> 一元 -> 算数 -> 比较 -> 逻辑 -> 赋值
- 括号最高
- 一元运算
- 算数运算
- 关系运算
- 相等运算
- 逻辑运算 先&& 再 ||
- 赋值运算
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/18036074