本技术分享为js运算符详解,如果你对这段知识并不是很清楚,那么请仔细阅读下面的内容,本章代码可以直接使用,愿你也能成为前端工程师之一!
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、运算符
主要分享内容为比较运算符和逻辑运算符的使用,知道什么是短路运算
1.比较运算符
计算机除了能够处理数据的加减乘除运算外,还能对数据进行比较,如大小比较、类型比较等,比较运算的结果为一定布尔类型。比较运算符也叫关系运算符。
大小比较:
<script>
let x = 10;
let y = 5;
// document.write(x > y);
// document.write(x >= y);
// document.write(x < y);
// document.write(x <= y);
// document.write(x == y);
// document.write(x != y);
</script>
字符串类型大小比较相对抽象一些,其实在计算机内部所有的数据都是以二进制形式存在的,计算机诞生于美国,最初将英语语系中的128个字符存入了计算机,即ASCII (American Standard Code for Information Interchange) 美国信息交换标准代码。
<script>
// 通过查 ASCII 对照表,得知 a 对应数字97,A 对应 65
let s = 'a';
let w = 'A';
// document.write(s > w);
// document.write(s >= w);
// document.write(s < w);
// document.write(s <= w);
// document.write(s == w);
// document.write(s != w);
let str = 'hello';
let str2 = 'world';
// 从左向右,逐个字母对比,直到比较出大小
document.write(str > str2);
let str3 = '我'; // wo
let str4 = '你'; // ni
// ASCII 中没有汉字怎么办?以拼音顺序对比!!
// 这种对比也叫字典排序
document.write(str3 > str4);
</script>
注:关于字符串之间的比较并不常见,有个大致的了解即可!
然而在进行比较时有一些细节需要重点认识一下 :
<script>
/* 数据类型不同的数据比较时,会发生数据类型的陷式转换 */
let a = '12';
let b = 12;
// 发生数据类型隐式转换,字符串变量 a 会被转成数字 12
document.write(a >= b);
// 发生数据类型隐式转换,字符串变量 t 会被转成字符串 '10'
let t = 10;
let j = 'a';
/* 由于计算精度问题,避免小数之间进行比较 */
let f = 0.1;
let z = 0.2;
console.log(f + s); // 结果为: 0.30000000000000004
</script>
2. 类型比较
数据进行比较时,总是会先检测数据类型是否一致,若不一致则优先进行隐式的类型转换,然后再比较值的大小,然而隐式类型转换容易导致代码逻辑混乱(需要去猜测数据类型如何转换),通过 === 或 !== 可以避免在比较运算时数据类型的隐式转换。
<script>
let num = '10';
let num1 = 10;
// 不会产生隐式数据类型转换,即不但值大小相等,数据类型必须一致
console.log(num === num1); // false
console.log(num !== num1); // true
let bool = true;
let fool = 1;
console.log(bool === fool); // false
</script>
二、逻辑运算符
逻辑运算符一般是将多个表达式的值组合起来,再次运算产生的新的表达式的值,逻辑运算主要分3种情形:1.逻辑且
它的特征是所联接的所有数据值均为 true
,则结果为 true
,任意 1 个为 false
,则结果为 false
。
<script>
// 如果大学录取,不但分数达标并且填报了志愿才会被录取
let score = 542;
let wish = '河北师范大学';
// 分数超过 530,并且志愿填报为 '河北师范大学'
document.write(score > 530 && wish === '河北师范大学');
// 考了 499 分,且志愿为 '河北师范大学'
score = 499;
document.write(score > 530 && wish === '河北师范大学');
// 考了 499,且志愿为 '河北农业大学'
wish = '河北农业大学';
document.write(score > 530 && wish === '河北师范大学');
</script>
2.逻辑或
它的特征是所联接的所有数据值任意 1 为 true
,则结果为 true
,所有数据值均为 false
,则结果为 false
。
<script>
// 博物馆对 12岁及以下儿童或65岁以上老人免票
let child = 10;
let adult = 68;
// 儿童10岁,或成人68岁
console.log(child <= 12 || adult > 68);
// 儿童14岁,或成人68岁
child = 14;
console.log(child <= 12 || adult > 68);
// 儿童14岁,或成人56岁
adult = 56;
console.log(child <= 12 || adult > 68);
</script>
3.逻辑非
它的特征是将当前数据的值强制转成相反的布尔值,如将 true
,变成 false
,将 false
,变成 true
。
<script>
// 只有上映的电影才能购票
let isShow = false;
// 电影未上映,逻辑非(取反)结果值为 true
console.log(!isShow);
// 电影已上映,逻辑非(取反)结果值为 false
isShow = true;
console.log(!isShow);
</script>
三.短路运算
当在使用逻辑运算符时,程序会产生一种比较特别的现象,它会省略部分代码的执行,称之为短路。
逻辑且,只要有一个值的类型为 false
,则整个结果即为 false
,所以一旦发现某个值为 false
时,所连接的其它值是 true
或 false
就没有必要判断了。
<script>
// 2. 逻辑或的短路
let gender = '男' || '';
console.log(gender);
</script>
注:无论逻辑且的短路或是逻辑或的短路有一个共同的规律,即结果值为最后执行表达式的值,一般用于变量赋值。
总结
以上就是关于js运算符的详细内容,简单的来说
&& 为一假则假;
|| 为一真则真
! 为取反,短路计算的时候,会截断代码向下执行.