当前位置: 首页 > news >正文

JavaScript 基础二part1.运算符:赋值、一元、比较、逻辑运算符

JavaScript 基础二

  • 1.1 赋值运算符
  • 1.2 一元运算符
    • 自增运算符的用法:
    • 例题
  • 1.3 比较运算符
    • 不同类型间的比较
    • 严格相等
    • 对 null 和 undefined 进行比较
  • 1.4 逻辑运算符
    • 例题
  • 1.5 运算符优先级

1.1 赋值运算符

赋值运算符:对变量进行赋值的运算符

  • 已经学过的赋值运算符:= 将等号右边的值赋予给左边, 要求左边必须是一个容器。
  • 其他赋值运算符:
    +=
    -=
    *=
    /=
    %=
  • 使用这些运算符可以在对变量赋值时进行快速操作
<script>let num = 1;num += 1;console.log(num); // 2
</script>

1.2 一元运算符

只需要一个表达式就可以运算的运算符叫一元运算。
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。

  • 例如
  • 二元运算符:加法 let num = 10+20;
  • 一元运算符:正负号 let num = -1; num = +num;

自增:
Ø 符号:++
Ø 作用:让变量的值 +1
自减:
Ø 符号:–
Ø 作用:让变量的值 -1
使用场景:经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了

自增运算符的用法:

  1. 前置自增和后置自增独立使用时二者并没有差别!
  2. 一般开发中我们都是独立使用
  3. 后面 i++ 后置自增会使用相对较多,并且都是单独使用

例题

let i = 1;
console.log(++i + 2);

结果是4。前置自增:先自加再使用(记忆口诀:++在前 先加)

let i = 1;
console.log(i++ + 2);

结果是3。后置自增:先使用再自加(记忆口诀:++在后 后加)

let i = 1;
console.log(i++ + ++i + i);

答案是7。
i++后加,所以先存再运算。 此时 i++ = 1,i=2
++i 先运算再存,此时++i = 3,i=3
1+3+3 = 7

1.3 比较运算符

使用场景:比较两个数据大小、是否相等。

比较运算符:

> : 左边是否大于右边
<: 左边是否小于右边
>=: 左边是否大于或等于右边
<=: 左边是否小于或等于右边
==: 左右两边值是否相等
===: 左右两边是否类型和值都相等
!==: 左右两边是否不全等
比较结果为boolean类型,即只会得到 true 或 false

开发中判断是否相等,强烈推荐使用 ===

console.log(2 == '2'); // true
console.log(2 === '2'); // false
  • 字符串比较,是比较的字符对应的ASCII码
    从左往右依次比较
    如果第一位一样再比较第二位,以此类推

  • NaN不等于任何值,包括它本身
    涉及到"NaN“ 都是false。 console.log(NaN === NaN) // false

  • 尽量不要比较小数,因为小数有精度问题
    在这里插入图片描述解决方法:转换成整数:(0.1*10 + 0.2*10 )/10

  • 不同类型之间比较会发生隐式转换
    最终把数据隐式转换转成number类型再比较
    所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==

不同类型间的比较

当对不同类型的值进行比较时,JavaScript 会首先将其转化为数字(number)再判定大小。

例如:

alert( '2' > 1 ); // true,字符串 '2' 会被转化为数字 2
alert( '01' == 1 ); // true,字符串 '01' 会被转化为数字 1

对于布尔类型值,true 会被转化为 1、false 转化为 0。

alert( true == 1 ); // true
alert( false == 0 ); // true

一个有趣的现象
有时候,以下两种情况会同时发生:
① 若直接比较两个值,其结果是相等的。
② 若把两个值转为布尔值,它们可能得出完全相反的结果,即一个是 true,一个是 false。

let a = 0;
alert( Boolean(a) ); // falselet b = "0";
alert( Boolean(b) ); // truealert(a == b); // true!
alert(Boolean(a) == Boolean(b));  // false!

严格相等

普通的相等性检查 == 存在一个问题,它不能区分出 0 和 false:alert( 0 == false ); // true
也同样无法区分空字符串和 false:alert( '' == false ); // true

这是因为在比较不同类型的值时,处于相等判断符号 == 两侧的值会先被转化为数字。空字符串和 false 也是如此,转化后它们都为数字 0。

严格相等运算符 === 在进行比较时不会做任何的类型转换。
同样的,与“不相等”符号 != 类似,“严格不相等”表示为 !==。

对 null 和 undefined 进行比较

见《现代JavaScript教程》跳转链接

1.4 逻辑运算符

使用场景:逻辑运算符用来解决多重条件判断
在这里插入图片描述

例题

需求:用户输入一个,判断这个数能被4整除,但是不能被100整除,满足条件,页面弹出true,否则弹出false

<body><script>// 1. 用户输入let num = +prompt('请输入一个数字:')// 2. 弹出结果alert(num % 4 === 0 && num % 100 !== 0)</script>
</body>

1.5 运算符优先级

在这里插入图片描述

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与比逻辑或优先级高
http://www.lryc.cn/news/273207.html

相关文章:

  • Linux 进程(八) 进程的退出码
  • Go语言中支持的internal目录配置与组织内私网包配置详解
  • 如何使用Nmap加强网络安全?
  • LeetCode 2487. 从链表中移除节点:单调栈
  • LabVIEW在高精度机器人视觉定位系统中的应用
  • Arm CCA机密计算扩展
  • 【Unity入门】热更新框架之xLua
  • 大数据Doris(四十五):物化视图选择最优
  • PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装
  • 如何成为ChatGPT 优质Prompt创作者
  • LeetCode第71题 - 简化路径
  • VSCode上远程调试代码出现的问题
  • 【langchain】入门初探实战笔记(Chain, Retrieve, Memory, Agent)
  • 《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类
  • 网络路由跟踪工具
  • 设计模式 七大原则
  • (1)(1.13) SiK无线电高级配置(一)
  • drf知识--10
  • 探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)
  • mysql死锁排查
  • 若依项目(ruoy-vue)多模块依赖情况简要分析
  • 【普中开发板】基于51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+设计报告+讲解视频)
  • 按照层次遍历结果打印完全二叉树
  • 基于SpringBoot的药店管理系统
  • Java 泛型深入解析
  • Apache Doris (六十): Doris - 物化视图
  • 【javaweb】tomcat9.0中的HttpServlet
  • 数据结构学习笔记——查找算法中的树形查找(B树、B+树)
  • python包chromadb安装失败总结
  • 机器学习(四) -- 模型评估(2)