js运算符-比较运算符-逻辑运算符-短路运算(详解)

本技术分享为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 时,所连接的其它值是 truefalse 就没有必要判断了。

<script>
	// 2. 逻辑或的短路
  let gender = '男' || '';
  console.log(gender);
</script>

注:无论逻辑且的短路或是逻辑或的短路有一个共同的规律,即结果值为最后执行表达式的值,一般用于变量赋值


总结

以上就是关于js运算符的详细内容,简单的来说
&& 为一假则假;
|| 为一真则真
! 为取反,短路计算的时候,会截断代码向下执行.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值