JavaScript常见的运算符

news2024/9/20 1:23:11

一、运算符和运算元

1.认识运算符

在小学的时候我们就学习了各种运算符,比如加号 +、乘号 *、减号 - 、除号/

几乎所有的编程语言都有各种各样的运算符(也被称之为操作符,operators)

  • 初次接触这些运算符, 你会感觉种类繁多, 难以记忆.
  • 但是并不需要特别担心, 因为很多的运算符我们在以后的开发中, 每天都会使用;
  • 多练习, 不需要刻意去记忆;
  • 而且常见的高级语言运算符都是相似的,学了JavaScript运算符很容易掌握C/C++/OC/Python等语言的运算符;

计算机最基本的操作就是执行运算,执行运算时就需要使用运算符来操作:

  • 比如 console.log(20 + 30); +号就是一个运算符.
  • 比如 console.log(20 * 30); *号也是一个运算符.

JavaScript按照使用场景的不同将运算符分成了很多种类型:

  • 算术运算符/赋值运算符/关系(比较)运算符/逻辑运算符

2.认识运算元

在正式开始运算之前,我们先学习一下常见的术语

  • 运算元 —— 运算符应用的对象。
    • 比如说乘法运算 5 * 2,有两个运算元
    • 左运算元 5 和右运算元 2;
    • 有时候人们也称其为参数
  • 如果一个运算符对应的只有一个运算元,那么它是 一元运算符。
    • 比如说一元负号运算符(unary negation)-,它的作用是对数字进行正负转换
  • 如果一个运算符拥有两个运算元,那么它是 二元运算符
    • 比如 2 + 3

一元运算符通常我们是使用 – 和 +,-号使用的会较多一些;

二、算数运算符

1.JavaScript中的运算

算术运算符

  • 算术运算符用在数学表达式中, 它的使用方式和数学中也是一致的;
  • 算术运算符是对数据进行计算的符号;

在这里插入图片描述

2.取余 % 和 求幂

取余运算符是 %,尽管它看起来很像百分数,但实际并无关联

  • a % b 的结果是 a 整除 b 的 余数
console.log(10 % 3); // 1

求幂运算 a ** b 将 a 提升至 a 的 b 次幂。(ES7中的语法,也叫做ES2016)

  • 在数学中我们将其表示为 a的b次方
console.log(2**3); // 8

三、赋值运算符

前面我们使用的 = 其实也是一个运算符,被称之为 赋值( assignments )运算符

= 是一个运算符,而不是一个有着“魔法”作用的语言结构。

  • 语句 x = value 将值 value 写入 x 然后返回 x。

链式赋值(Chaining assignments)

  • 链式赋值从右到左进行计算;
  • 首先,对最右边的表达式 2 + 2 求值,然后将其赋给左边的变量:c、b 和 a。
  • 最后,所有的变量共享一个值。
var a = b = c = 1;

但是从代码的可读性的角度来说,不推荐这种写法。

1.原地修改(Modify-in-place)

什么是原地修改呢?

  • 我们经常需要对一个变量做运算,并将新的结果存储在同一个变量中。

可以使用运算符 +=*= 来缩写这种表示。

var n = 10;
n += 10;
n -= 5;

所有算术和位运算符都有简短的修改并赋值运算符:/= 和 -= 等。

四、自增和自减

对一个数进行加一、减一是最常见的数学运算符之一。

所以,对此有一些专门的运算符:

  • 自增 ++ 将变量加1;
  • 自减 -- 将变量减1;
var count = 0;
// 先显示值,再自增
count++;
count--;
// 先自减,再显示值
--count;
++count;

自增/自减只能应用于变量。

  • 将其应用于数值(比如 5++)则会报错。

1.++和—的位置

运算符 ++ 和 – 可以置于变量前,也可以置于变量后。

  • 当运算符置于变量后,被称为后置形式(postfix form):counter++。
  • 当运算符置于变量前,被称为前置形式(prefix form):++counter。
  • 两者都做同一件事:将变量 counter 与 1 相加。

他们有什么区别吗?

  • 有,但只有当我们使用 ++/-- 的返回值时才能看到区别;
  • 如果自增/自减的值不会被使用,那么两者形式没有区别;
  • 如果我们想要对变量进行自增操作,并且 需要立刻使用自增后的值,那么我们需要使用前置形式;
  • 前置形式返回一个新的值,但后置返回原来的值;

五、运算符优先级

运算符放到一起使用时会有一定的优先级:

在MDN上给出了所有运算符的优先级(不用去记)

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

六、比较运算符

我们知道,在数学中有很多用于比较大小的运算符,在JavaScript中也有相似的比较:

  • 大于 / 小于:a > b,a < b。
  • 大于等于 / 小于等于:a >= b,a <= b。
  • 检查两个值的相等:a == b,请注意双等号 == 表示相等性检查,而单等号 a = b 表示赋值。
  • 检查两个值不相等:不相等在数学中的符号是 ≠,但在 JavaScript 中写成 a != b。

比较运算符的结果都是Boolean类型的

1.=== 和 == 的区别

普通的相等性检查 == 存在一个问题,它不能区分出 0 和 false,或者空字符串和 false这类运算:

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

如果我们需要区分 0 和 false,该怎么办?

  • 严格相等运算符 === 在进行比较时不会做任何的类型转换;
  • 换句话说,如果 a 和 b 属于不同的数据类型,那么 a === b 不会做任何的类型转换而立刻返回 false;

同样的,“不相等”符号 != 类似,“严格不相等”表示为 !==

严格相等的运算符虽然写起来稍微长一些,但是它能够很清楚地显示代码意图,降低你犯错的可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/948728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lora升级!ReLoRa!最新论文 High-Rank Training Through Low-Rank Updates

目录 摘要1 引言2 相关工作3 方法4 实验5 结果6 结论7 局限性和未来工作 关注公众号TechLead&#xff0c;分享AI与云服务技术的全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0…

使用文本编辑器sublime text编写python代码

前言 上篇文章介绍了如何安装python程序&#xff0c;这次就讲讲如何用sublime来编写python代码 有的小伙伴可能会有疑问&#xff0c;为什么不选择pycharm来编写&#xff1f; pycharm写代码会有代码补全功能&#xff0c;而我们新手正是要在犯错误的过程中积累经验&#xff0c…

论文解读 | 新发现编码器PointPillars用于点云检测物体,更加高效且精准

原创 | 文 BFT机器人 01 技术背景 在过去的几年中&#xff0c;深度学习技术已经在图像领域的物体检测中取得了显著的进展&#xff0c;诸如目标检测算法&#xff08;如Faster R-CNN、YOLO和SSD&#xff09;在图像中能够高效准确地检测出物体。然而&#xff0c;当涉及到点云数据…

get√接口自动化核心知识点浓缩,为面试加分

日常接触到的接口自动化从实际目标可以划分为两大类&#xff1a; 1、为模拟测试数据而开展的接口自动化 这种接口自动化大多是单次执行&#xff0c;目的很明确是为了功能测试创造测试数据&#xff0c;节约人工造数据的时间和人工成本&#xff0c;提高功能测试人员的测试效率。…

《论文阅读18》JoKDNet

一、论文 研究领域&#xff1a;用于大尺度室外TLS点云配准的联合关键点检测和特征表达网络论文&#xff1a;JoKDNet: A joint keypoint detection and description network for large-scale outdoor TLS point clouds registration International Journal of Applied Earth Ob…

Java定时任务调用执行shell脚本实例

文章目录 Java代码1234 shell脚本 Java代码 1 2 3 4 shell脚本

检查nacos是否正常启动

可以通过以下几种方式检查nacos是否启动&#xff1a; 查看nacos日志文件&#xff1a;启动nacos时&#xff0c;控制台会输出一些信息&#xff0c;可以查看控制台输出的信息&#xff0c;如果显示“Server startup in XXX ms”等字样&#xff0c;则说明nacos已经启动。 查看端口…

【C++深入浅出】初识C++下篇(auto关键字、范围for、nullptr指针)

目录 一. 前言 二. auto关键字 2.1 auto的引入 2.2 auto简介 2.3 auto的使用细则 2.4 auto不能推导的场景 三. 基于范围的for循环(C11) 3.1 范围for的语法 3.2 范围for的原理 3.3 范围for的使用条件 四. 指针空值nullptr(C11) 一. 前言 上期我们介绍了c新增的两个重…

ERROR o.s.b.SpringApplication - Application run failed

报错&#xff1a; Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2023-08-25 18:32:41,704 main ERROR o.s.b.SpringApplication - Application run failed org.springframework.beans.factory.BeanCre…

路由器的简单概述(详细理解+实例精讲)

系列文章目录 华为数通学习&#xff08;4&#xff09; 目录 系列文章目录 华为数通学习&#xff08;4&#xff09; 前言 一&#xff0c;网段间通信 二&#xff0c;路由器的基本特点 三&#xff0c;路由信息介绍 四&#xff0c;路由表 五&#xff0c;路由表的来源有哪些…

tsmc standard cell命名规则

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 CKMUX2代表二输入clock mux&#xff0c;D2代表驱动强度X2&#xff0c;6T代表row高为6track&#xff0c;16P96C代表gate length和poly pitch&#xff0c;LVT就是low voltage thr…

鲜花小程序制作教程:让你的花店与时俱进

在当今的电子商务时代&#xff0c;消费者对于购物体验的要求越来越高。对于鲜花这一类商品&#xff0c;消费者更是希望能够方便快捷地购买到高品质的花卉&#xff0c;并且能够享受到一流的购物体验。为了满足消费者的需求&#xff0c;许多商家选择利用小程序来打造一流的鲜花购…

ssm化妆品配方及工艺管理系统源码和论文

ssm化妆品配方及工艺管理系统源码和论文083 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 课题的目的和意义 进入21世纪后我国的经济增长在全球脱颖而出&#xff0c;人们的生活质量也在不断地提高&#xff0…

【Java多线程学习7】JMM(Java内存模型)学习

JMM&#xff08;Java内存模型&#xff09;学习 一、什么是Java内存模型&#xff1f; 为什么需要JMM&#xff1f; JMM&#xff08;Java内存模型&#xff09;&#xff0c;可以看作是Java定义的并发编程相关的一组规范&#xff0c;除了抽象了线程和主内存之间的关系之外&#xf…

Vulnhub系列靶机---JIS-CTF-VulnUpload-CTF01靶机

文章目录 1、网卡配置2、信息收集主机发现端口扫描目录扫描 3、漏洞探测4、漏洞利用一句话木马蚁剑 GetShellSSH连接提权 JIS文档说明 JIS-CTF-VulnUpload-CTF01靶机下载地址 该靶机有5个flag 1、网卡配置 开启靶机&#xff0c;看见加载的进度条按shift&#xff0c;看到如下界…

科普宣传片的投放渠道

科普宣传片通常以教育性和娱乐性为主导&#xff0c;力求在观众中引起兴趣和好奇心&#xff0c;以吸引他们主动学习和探索科学。它可以在电视台、网络平台、科普展览、学校教育等场合播放&#xff0c;对各个年龄段的观众都有普及科学知识的作用。接下来由深圳科普宣传片制作公司…

LeetCode——回溯篇(三)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 46. 全排列 47. 全排列 II 332. 重新安排行程 51. N 皇后 37. 解数独 46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任…

uni-app实现点击显示隐藏列表,兼容微信小程序

效果&#xff1a; <view class"list-item" v-for"(item,index1) in listData" :key"index1"><view class"item-title" click"item.content.length>0?handleToggle(item,index1):"><view class"&qu…

Ansible学习笔记7

user模块&#xff1a; user模块用于管理用户账户和用户属性。 如果是windows要换一个win_user模块。 创建用户&#xff1a;present&#xff1a; [rootlocalhost ~]# ansible group1 -m user -a "nameaaa statepresent" 192.168.17.106 | CHANGED > {"ansi…

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表的指针地址实现&#xff0c;有一系列结点&#xff08;地址&#xff09;组成&#xff0c;结点可动态的生成。 2、结点包括两个部分&#xff1a;&#x…