JavaScript常见的运算符

一、运算符和运算元

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.mzph.cn/news/59379.shtml

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

相关文章

Kotlin判断null比较let布尔值Boolean

Kotlin判断null比较let布尔值Boolean class MyData {val count: Int? 2023val number: Int? null }fun main(args: Array<String>) {val data MyData()val year 2022if (data.count ! null) {if (data.count > year) {println("data.count ! null")}}…

CSS 盒子模型

前言 盒子模型-组成 CSS盒子模型是一种用来描述元素在页面布局中占据空间的模型。它将每个元素看作由内容区域、内边距、边框和外边距组成的一个矩形框。 盒子模型的组成部分包括&#xff1a; 内容区域&#xff08;Content&#xff09;&#xff1a;显示元素的实际内容&#xf…

无涯教程-Android - Frame Layout函数

Frame Layout 旨在遮挡屏幕上的某个区域以显示单个项目&#xff0c;通常&#xff0c;应使用FrameLayout来保存单个子视图&#xff0c;因为在子视图彼此不重叠的情况下&#xff0c;难以以可扩展到不同屏幕尺寸的方式组织子视图。 不过&#xff0c;您可以使用android:layout_grav…

Axure RP 8.1.0.3400(原型设计工具)

Axure RP 8是一款原型设计工具&#xff0c;它提供了丰富的功能和工具&#xff0c;帮助用户创建高质量的网页、移动应用和桌面软件原型。以下是Axure RP 8的一些特色介绍&#xff1a; 强大的交互设计&#xff1a;Axure RP 8支持创建复杂的动画和过渡效果&#xff0c;让你的原型更…

微信短链跳转到小程序指定页面调试

首先说下背景&#xff1a;后端给了短链地址&#xff0c;但是无法跳转到指定页面。总是在小程序首页。指定的页面我们是h5页面。排查步骤如下&#xff1a; 1、通过快速URL Scheme 编译。上部普通编译 下拉找到此选项。 、 2、按照小程序的要求的URL Scheme输入。另外后端给的…

Redis7之介绍(一)

1. 是什么 Redis:REmote Dictionary Server(远程字典服务器&#xff09; Remote Dictionary Server( 远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高性能的Key-Value数据库提供了丰富的数据结构&#xff0c;例如String、Hash、List、…

PlantUML文本绘制类图

记录下文本绘制类图的语法 参考 https://juejin.cn/post/6844903731293585421 类的UML表示 使用UML表示一个类&#xff0c;主要由三部分组成。类名、属性、方法。其中属性和方法的访问修饰符用 - 、# 、 表示 private、protected、public。 如图所示&#xff0c;表示A类有一个…

筑牢数据隐私安全底线,ADSCOPE通过ISO隐私信息管理体系认证!

数字时代&#xff0c;信息安全尤其是数据隐私信息保护已经成为社会共识。近日&#xff0c;ADSCOPE&#xff08;上海倍孜网络技术有限公司&#xff09;已通过相关组织机构评审&#xff0c;符合ISO/IEC 27701&#xff1a;2019标准&#xff0c;获得隐私信息管理体系认证证书&#…

Django基础5——ORM中间程序

文章目录 一、基本了解二、ORM基本操作2.1 连接数据库2.1.1 使用sqlite数据库2.1.2 使用MySQL数据库 2.2 对数据库操作2.2.1 增&#xff08;前端数据——>数据库&#xff09;2.2.2 查&#xff08;数据库——>前端展示&#xff09;2.2.3 改&#xff08;修改数据&#xff0…

已知两地经纬度,计算两地直线距离

文章目录 1 原理公式2 代码实现2.1 JavaScript2.2 C2.3 Python2.4 MATLAB 1 原理公式 在地球上&#xff0c;计算两点之间的直线距离通常使用地理坐标系&#xff08;例如WGS84&#xff09;。计算两地直线距离的公式是根据经纬度之间的大圆距离&#xff08;Great Circle Distanc…

C语言练习4(巩固提升)

C语言练习4 选择题 前言 面对复杂变化的世界&#xff0c;人类社会向何处去&#xff1f;亚洲前途在哪里&#xff1f;我认为&#xff0c;回答这些时代之问&#xff0c;我们要不畏浮云遮望眼&#xff0c;善于拨云见日&#xff0c;把握历史规律&#xff0c;认清世界大势。 选择题 …

shell常用脚本

1、Java项目重启脚本 #!/bin/bash# 定义一个函数来结束进程和启动新进程 function restart(){JAR_NAME$1 # jar包LOG_NAME$2 # 日志JVM_ARGS$3 # jvm 参数PID$(ps -ef | grep java | grep ${JAR_NAME} | awk { print $2 })if [[ ! -z "$PID" ]]; thenecho "…

postgresql-字符函数

postgresql-字符函数 字符串连接字符与编码字符串长度大小写转换子串查找与替换截断与填充字符串格式化MD5 值字符串拆分字符串反转 字符串连接 concat(str, …)函数用于连接字符串&#xff0c;并且忽略其中的 NULL 参数&#xff1b;concat_ws(sep, str, …) 函数使用指定分隔…

【黑科技】游戏开发程序员必备工具【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;效率…

递归算法学习——子集

目录 一&#xff0c;题目解析 二&#xff0c;例子 三&#xff0c;题目接口 四&#xff0c;解题思路以及代码 1.完全深度搜索 2.广度搜索加上深度优先搜索 五&#xff0c;相似题 1.题目 2.题目接口 3.解题代码 一&#xff0c;题目解析 给你一个整数数组 nums &#xff0c…

软件开发的201个原则 阅读笔记 第172-201个原则

目录 原则172 做项目总结 第8章 产品保证原则 原则173 产品保证并不是奢侈品 原则 174 尽早建立软件配置管理过程 原则175 使软件配置管理适应软件过程 原则176 组织SCM 独立于项目管理 原则 177 轮换人员到产品保证组织 给所有中间产品一个名称和版本 原则179 控制基准 原则…

学习JAVA打卡第四十五天

StringBuffer类 StringBuffer对象 String对象的字符序列是不可修改的&#xff0c;也就是说&#xff0c;String对象的字符序列的字符不能被修改、删除&#xff0c;即String对象的实体是不可以再发生变化&#xff0c;例如&#xff1a;对于 StringBuffer有三个构造方法&#xff…

PHP敬老院管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 敬老院管理系统&#xff08;养老&#xff09;是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 论文 https://download.csdn.net/download/qq_41221322/…

财务部发布《企业数据资源相关会计处理暂行规定》

导读 财务部为规范企业数据资源相关会计处理&#xff0c;强化相关会计信息披露&#xff0c;根据《中华人民共和国会计法》和相关企业会计准则&#xff0c;制定了《企业数据资源相关会计处理暂行规定》。 加gzh“大数据食铁兽”&#xff0c;回复“20230828”获取材料完整版 来…

adb 命令

1.adb shell dumpsys activity top | find "ACTIVITY" 查看当前运行的activity包名 2.adb shell am start -n 包名/页面名 打开应用的页面 3.查看将要启动或退出app的包名 adb shell am monitor 只有在启动或退出的时候才会打印 4.查看当前启动应用的包名 ad…