【JavaScript】6_特殊运算符与优先级
【摘要】 8、相等运算符==相等运算符,用来比较两个值是否相等使用相等运算符比较两个不同类型的值时,它会将其转换为相同的类型(通常转换为数值)然后再比较类型转换后值相同也会返回truenull和undefined进行相等比较时会返回trueNaN不和任何值相等,包括它自身===全等运算符,用来比较两个值是否全等它不会进行自动的类型转换,如果两个值的类型不同直接返回falsenull和undefined...
8、相等运算符
==
- 相等运算符,用来比较两个值是否相等
- 使用相等运算符比较两个不同类型的值时,
它会将其转换为相同的类型(通常转换为数值)然后再比较
类型转换后值相同也会返回true - null和undefined进行相等比较时会返回true
- NaN不和任何值相等,包括它自身
===
- 全等运算符,用来比较两个值是否全等
- 它不会进行自动的类型转换,如果两个值的类型不同直接返回false
- null和undefined进行全等比较时会返回false
!=
- 不等,用来检查两个值是否不相等
- 会自动的进行类型转换
!==
- 不全等,比较两个值是否不全等
- 不和自动的类型转换
<script>
let result = 1 == 1 // true
result = 1 == 2 // false
result = 1 == '1' // true
result = true == "1" // true
result = null == undefined // true
result = NaN == NaN // false
result = 1 === "1" // false
result = null === undefined // false
result = 1 != 1 // false
result = 1 != "1" // false
result = 1 !== "1" // true
console.log(result)
</script>
9、条件运算符
条件运算符
条件表达式 ? 表达式1 : 表达式2
\- 执行顺序:
条件运算符在执行时,会先对条件表达式进行求值判断,
如果结果为true,则执行表达式1
如果结果为false,则执行表达式2
<script>
// false ? alert(1) : alert(2)
let a = 100
let b = 200
// a > b ? alert('a大!') : alert("b大!")
let max = a > b ? a : b
// alert(max)
</script>
10、运算符的优先级
和数学一样,JS中的运算符也有优先级,比如先乘除和加减。
可以通过优先级的表格来查询运算符的优先级
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
\- 在表格中位置越靠上的优先级越高,优先级越高越先执行,优先级一样自左向右执行
优先级我们不需要记忆,甚至表格都不需要看
因为()拥有最高的优先级,使用运算符时,如果遇到拿不准的,可以直接通过()来改变优先级即可
<script>
let a = 1 + 2 * 3 // 7
a = (1 && 2) || 3
console.log(a)
</script>
拓展:JS特殊运算符
11.1 数字转化:单目运算符 +
单目运算符 +
作用于数字无效,结果不变。但是可以用来转化非数字类型为数字,等效于 Number()
。
let x = false;
let y = "";
let z = "123.4";
console.log(+x); // 0
console.log(+y); // 0
console.log(+z); // 123.4
用于非数字型之间的数学运算,很简洁:
let a = "12";
let b = "24";
console.log(+a + +b); // 36
11.2 逗号运算符 ,
逗号运算符能让我们处理多个语句,使用 ,
将它们分开。每个语句都运行了,但是只有最后的语句的结果会被返回。
let a = (3 + 4, 5 + 6);
console.log(a); // 11
11.3 布尔值转换符 !!
两个相邻的非逻辑运算符组成的 !!
,可以将一个值转换为对应的布尔值。等效于 Boolean()
。
console.log(!!"0"); // true
console.log(!!0); // false
console.log(!!undefined); //false
console.log(!!"aaa"); // true
11.4 空值合并运算符 ??
我们将值既不是 null
也不是 undefined
的表达式定义为已定义的值(defined)。即:??
。
a ?? b
结果为:
- 若
a
已定义,则结果为 a
- 若
a
不是已定义的,则结果为 b
等价于:
(a !== null && a !== undefined) ? a : b;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)