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

JavaScript高级程序设计读书分享之3章——3.5操作符

JavaScript高级程序设计(第4版)读书分享笔记记录

适用于刚入门前端的同志

目录

 操作符

一元操作符

递增/递减操作符

 一元加和减

布尔操作符

 逻辑非

逻辑与

 逻辑或

乘性操作符

乘法操作符

除法操作符

取模操作符

加性操作符

加法操作符

减法操作符

关系操作符

相等操作符

等于和不等于

 全等和不全等

条件操作符

赋值操作符

逗号操作符


 

 操作符

        可用于操作数据值的操作符,包括数学操作符(如加、减)、位操作符、关系操作符和相等操作符等。ECMAScript 中的操作符是独特的,因为它们可用于各种值,包括字符串、数值、布尔值,甚至还有对象。

一元操作符

只操作一个值的操作符叫一元操作符unary operator

递增/递减操作符

有两个版本:前缀版和后缀版。顾名思义,前缀版就是位于要操作的变量前头,后缀版就是位于要操作的变量后头。
//前缀递增操作符
let age = 24
++age; //同等于 age = age + 1;//前缀递减操作符
let age = 29; 
--age; //同等于 age = age - 1;//后缀递增操作符
let age = 24
age++;//后缀递减操作符
let age = 29; 
age--;
前缀递增和递减在语句中的优先级是相等的,因此会从左到右依次求值。
let num1 = 2; 
let num2 = 20; 
let num3 = --num1 + num2; 
let num4 = num1 + num2; 
console.log(num3); // 21 
console.log(num4); // 21   是因为加法使用的也是递减后的值。
后缀版递增和递减在语句被求值后才发生
let num1 = 2; 
let num2 = 20; 
let num3 = num1-- + num2; 
let num4 = num1 + num2;
console.log(num3); // 22 
console.log(num4); // 21

 一元加和减

一元加由一个加号(+)表示,放在变量前头,对数值没有任何影响
let num = 25; 
num = +num; 
console.log(num); // 25
  一元减由一个减号(-)表示,放在变量前头,主要用于把数值变成负值
let num = 25; 
num = -num; 
console.log(num); // -25
       如果将一元应用到非数值,则会执行与使用 Number()转型函数一样的类型转换:布尔值 false和 true 转换为 0 1,字符串根据特殊规则进行解析,对象会调用它们的 valueOf()/toString()方法以得到可以转换的值。

布尔操作符

 逻辑非

        逻辑非操作符由一个叹号(!)表示,可应用给 ECMAScript 中的任何值。这个操作符始终返回布尔值,无论应用到的是什么数据类型。逻辑非操作符首先将操作数转换为布尔值,然后再对其取反。
  •  如果操作数是对象,则返回 false
  •  如果操作数是空字符串,则返回 true
  •  如果操作数是非空字符串,则返回 false
  •  如果操作数是数值 0,则返回 true
  •  如果操作数是非 0 数值(包括 Infinity),则返回 false
  •  如果操作数是 null,则返回 true
  •  如果操作数是 NaN,则返回 true
  •  如果操作数是 undefined,则返回 true
console.log(!false); // true 
console.log(!"blue"); // false 
console.log(!0); // true 
console.log(!NaN); // true 
console.log(!""); // true 
console.log(!12345); // false

逻辑与

逻辑与操作符由两个和号(&&)表示,应用到两个值
let result = true && false;

 逻辑或

逻辑或操作符由两个管道符(||)表示
let result = true || false;

 利用这个行为,可以避免给变量赋值 null undefined

let myObject = preferredObject || backupObject;
//如果 preferredObject 不是 null,则它的值就会赋给myObject;如果 preferredObject 是 null,则backupObject 的值就会赋给 myObject。

乘性操作符

乘法操作符

乘法操作符由一个星号(*)表示,可以用于计算两个数值的乘积
let result = 34 * 56;

除法操作符

除法操作符由一个斜杠(/)表示,用于计算第一个操作数除以第二个操作数的商
let result = 66 / 11;

取模操作符

取模(余数)操作符由一个百分比符号(%)表示
let result = 26 % 5; // 等于 1

加性操作符

加法操作符

let result = 1 + 2;

如果两个操作数都是字符串,则将第二个字符串拼接到第一个字符串后面

如果只有一个操作数是字符串,则将另一个操作数转换为字符串,再将两个字符串拼接在一起

let result = 'hello' + '你好'
let result2 = 5 + "5"; // 一个数值和一个字符串
console.log(result); // "hello你好"
console.log(result2); // "55"

减法操作符

let result = 2 - 1;

关系操作符

关系操作符执行比较两个值的操作,包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=),用法跟数学课上学的一样。

相等操作符

等于和不等于

等于操作符用两个等于号(==)表示,如果操作数相等,则会返回 true。
不等于 操作符用叹号和等于号(!=)表示,如果两个操作数不相等,则会返回 true

 全等和不全等

全等操作符由 3 个等于号(===)表示,只有两个操作数在不转换的前提下相等才返回 true。
let result1 = ("55" == 55); // true,转换后相等
let result2 = ("55" === 55); // false,不相等,因为数据类型不同
不全等操作符用一个叹号和两个等于号(!==)表示,只有两个操作数在不转换的前提下不相等才
返回 true
let result1 = ("55" != 55); // false,转换后相等
let result2 = ("55" !== 55); // true,不相等,因为数据类型不同

条件操作符

语法:

variable = boolean_expression ? true_value : false_value;
如果 boolean_expression true ,则赋值 true_value ;如果boolean_expression 是 false,则赋值 false_value

赋值操作符

  • 乘后赋值(*=
  • 除后赋值(/=
  • 取模后赋值(%=
  • 加后赋值(+=
  • 减后赋值(-=
  • 左移后赋值(<<=
  • 右移后赋值(>>=
  • 无符号右移后赋值(>>>=

案例:

let num = 10; 
num = num + 10; 
//以上代码的第二行可以通过复合赋值来完成:
let num = 10; 
num += 10;

逗号操作符

逗号操作符可以用来在一条语句中执行多个操作,如下所示:
let num1 = 1, num2 = 2, num3 = 3;
在赋值时使用逗号操作符分隔值,最终会返回表达式中最后一个值:
let num = (5, 1, 4, 8, 0); // num 的值为 0

相关文章:

JavaScript高级程序设计读书分享之3章——3.5操作符

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 目录 操作符 一元操作符 递增/递减操作符 一元加和减 布尔操作符 逻辑非 逻辑与 逻辑或 乘性操作符 乘法操作符 除法操作符 取模操作符 加性操作符 加法操作符 减法操作符 关系操作符 相等操…...

moveToCoordinateF3DconcatenateRotations

moveToCoordinate 演示视频: 注意:前提是3~6轴机器人机构且不是PickAndPlace 该方法_3D。Poses.moveToCoordinate 移动由 指定的对象,该对象 对应于支持的机器人配置之一,只要标识的机器人配置支持,其第一个动画指向指定坐标和指定旋转。这无需您定义姿势即可工作。 工…...

多线程面试题开胃菜6(5道)

一、Fork/Join 框架是干什么的&#xff1f;大任务自动分散小任务&#xff0c;并发执行&#xff0c;合并小任务结果。二、线程数过多会造成什么异常&#xff1f;线程过多会造成栈溢出&#xff0c;也有可能会造成堆异常。三、说说线程安全的和不安全的集合。Java 中平时用的最多的…...

植物大战 List——C++

这里写目录标题vector和stirng的细节对于stringlist的使用list的迭代器反向迭代器构造函数关于list::sort的排序uniquelist的底层模拟实现结点类的实现迭代器模拟实现list实现插入的实现迭代器失效inserterase析构函数拷贝构造赋值构造函数vector和stirng的细节 复习vector的深…...

安灯(andon)系统是车间现场管理的必备工具

安灯&#xff08;andon&#xff09;系统应用越来越广泛&#xff0c;不单单局限于汽车行业&#xff0c;更多生产型企业意识到了提高工作效率的重要性&#xff0c;提高工作效率根本的能提高生产水平&#xff0c;提高产量&#xff0c;而且安灯&#xff08;andon&#xff09;系统不…...

Hazel游戏引擎(004)

本人菜鸟&#xff0c;文中若有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/GameEngineLightWeight&#xff08;中文的注释适合中国人的你&#xff09; 文章目录前言操作步骤讲解GitHubHazel项目此项目定位项目属性修改Sand…...

【CS224W】(task4)图嵌入表示学习

note node2vec&#xff1a; 计算随机游走概率从节点uuu开始模拟rrr条长度为lll的游走链路使用 Stochastic Gradient Descent 优化损失函数 Node2vec在节点分类方面表现更好&#xff1b;而其他方法在链路预测上效果更好&#xff0c;如random walk效率更高&#xff1b;graph emb…...

分享111个HTML医疗保健模板,总有一款适合您

分享111个HTML医疗保健模板&#xff0c;总有一款适合您 111个HTML医疗保健模板下载链接&#xff1a;https://pan.baidu.com/s/1YInaQDnUVsXYtMh1Ls-BHg?pwdxvfc 提取码&#xff1a;xvfc Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 import os import shuti…...

山东大学2022操作系统期末

接力&#xff1a;山东大学2021操作系统期末 2022—2023山东大学计算机操作系统期末考试回忆版 简答题(4 10 points) &#xff08;1&#xff09;用户态&#xff0c;核心态是什么 &#xff08;2&#xff09;这种区分对现代操作系统的意义 &#xff08;3&#xff09;printf(“…...

Hadoop高可用搭建(一)

目录 创建多台虚拟机 修改计算机名称 快速生效 修改网络信息 重启网络服务 关闭和禁用每台机的防火墙 同步时间 安装ntpdate 定时更新时间 启动定时任务 设置集群中每台机器的/etc/hosts 把hosts拷贝发送到每一台虚拟机 配置免密登陆 将本机的公钥拷贝到要免密登…...

算法 - 剑指Offer 重建二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 解题思路 这题较为复杂&#xff0c; 首先审题&#xff0c;前序遍历规则&#xff1a;根左右&#xff0c; 中序遍历&#x…...

手写JavaScript常见5种设计模式

想分享的几种设计模式 目前模式&#xff1a;工厂模式&#xff0c;单例模式&#xff0c;适配器模式&#xff0c;装饰者模式&#xff0c;建造者模式 建造者模式 简介&#xff1a;建造者模式&#xff08;builder pattern&#xff09;比较简单&#xff0c;它属于创建型模式的一种…...

Python 异步: 当前和正在运行的任务(9)

我们可以反省在 asyncio 事件循环中运行的任务。这可以通过为当前运行的任务和所有正在运行的任务获取一个 asyncio.Task 对象来实现。 1. 如何获取当前任务 我们可以通过 asyncio.current_task() 函数获取当前任务。此函数将为当前正在运行的任务返回一个任务对象。 ... # …...

REDIS-雪崩、击穿、穿透

直接发车&#x1f697; 一.雪崩 1.触发原因 A.大量缓存数据在同一时间过期(失效) B.redis故障宕机 上述均导致全部请求去访问数据库&#xff0c;导致DB压力骤增&#xff0c;严重则导致数据库宕机/系统宕机 2.应对策略 不同触发原因&#xff0c;应对策略也不一致 应对A&a…...

什么人合适学习Python

发了几天的Python基础&#xff0c;也认识了一些朋友&#xff0c;忽然有人问起&#xff0c;说为啥学Python&#xff0c;或者说啥人学习Python&#xff0c;作为一个教龄8年从Python一线讲师到Python教学主管的我和大家分享一下个人的看法&#xff0c;还是提前说一下&#xff0c;个…...

greenDao的使用文档

介绍&#xff1a;greenDAO 是一款轻量级的 Android ORM 框架&#xff0c;将 Java 对象映射到 SQLite 数据库中&#xff0c;我们操作数据库的时候&#xff0c;不在需要编写复杂的 SQL语句&#xff0c; 在性能方面&#xff0c;greenDAO 针对 Android 进行了高度优化&#xff0c; …...

基于JAVA+SpringBoot+LayUI+Shiro的仓库管理系统

基于JAVASpringBootLayUIShiro的仓库管理系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项…...

金三银四面试必看,复盘字节测试开发面试:一次测试负责人岗位面试总结

最近面试了某企业的测试负责人岗位&#xff0c;历经四面&#xff0c;收获蛮多的。 这篇文章&#xff0c;我想聊聊这次面试过程中的一些经历&#xff0c;以及些许经验和教训。 岗位要求 岗位名称&#xff1a;测试负责人 岗位要求&#xff1a;1、扎实的技术以及丰富的技术项目…...

【算法自由之路】 贪心算法

贪心算法 局部最右得到全局最右难点在于如何证明局部最优可以得到全局最优堆 和 排序 是贪心算法最常用的实现算法 贪心算法作为最符合自然智慧的算法&#xff0c;思路是从小部分取最优从而获得最终的最优&#xff0c;但是难得是怎样获取部分最优才能得到全局最优。 有时候我…...

Scratch少儿编程案例-水果忍者-学生作业

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

第6.21章 机器人自动驾驶SLAM中的数学总结(二十一):矩阵理论基础及在SLAM中的核心应用

机器人SLAM中的超定方程与矩阵理论核心应用总结 线性代数的矩阵理论是机器人SLAM(同步定位与地图构建)实现高精度定位、点云配准、坐标系转换、后端优化的核心数学支撑,而超定方程则是SLAM中处理观测数据多于未知参数的核心数学工具,二者结合解决了SLAM中从传感器数据解算…...

Qwen3-0.6B-FP8 Web界面国际化:支持RTL语言(阿拉伯语/希伯来语)

Qwen3-0.6B-FP8 Web界面国际化&#xff1a;支持RTL语言&#xff08;阿拉伯语/希伯来语&#xff09; 你有没有想过&#xff0c;让一个AI助手不仅能理解你的语言&#xff0c;还能用你习惯的书写方式和你交流&#xff1f;对于全球数亿使用阿拉伯语、希伯来语等从右向左&#xff0…...

从电商大促到日志分析:Doris分区分桶在不同业务场景下的实战套路

从电商大促到日志分析&#xff1a;Doris分区分桶在不同业务场景下的实战套路 当数据量突破TB级门槛时&#xff0c;如何让分布式数据库像瑞士军刀一样精准适配不同业务场景&#xff1f;这可能是每位数据架构师深夜调试集群时思考的问题。Doris作为MPP架构的实时分析型数据库&…...

颠覆传统:3倍效率提升的Markdown到PPT智能转换解决方案

颠覆传统&#xff1a;3倍效率提升的Markdown到PPT智能转换解决方案 【免费下载链接】md2pptx Markdown To PowerPoint converter 项目地址: https://gitcode.com/gh_mirrors/md/md2pptx 通过创新解析引擎与模板系统&#xff0c;实现技术文档到演示文稿的自动化转换&…...

保姆级STM32CubeMX最新版下载入门攻略|小白零踩坑,看完直接上手

文章目录摘要STM32CubeMX的功能与特点一、避坑前提&#xff1a;认准官方渠道&#xff0c;拒绝第三方“野链接”二、 step1&#xff1a;找到STM32CubeMX官方下载页&#xff08;图文手把手&#xff09;三、 step2&#xff1a;免费注册ST账号&#xff08;30秒搞定&#xff0c;无需…...

从理论到实践:单相直流稳压电源的模块化设计与选型指南

1. 直流稳压电源的基础认知 第一次接触直流稳压电源时&#xff0c;我和很多初学者一样&#xff0c;被各种专业术语绕得头晕。简单来说&#xff0c;它就像是个"电力翻译官"&#xff0c;把家里墙上220V的交流电&#xff0c;转换成电子设备需要的稳定直流电。举个例子&a…...

AFSim仿真系统中的图像处理器:从静态图像到视频流的目标识别全解析

1. WSF_IMAGE_PROCESSOR的核心功能解析 AFSim仿真系统中的WSF_IMAGE_PROCESSOR模块&#xff0c;本质上是一个专门处理成像传感器数据的智能中枢。我在多个仿真项目中实际使用过这个模块&#xff0c;发现它最厉害的地方在于能把复杂的图像数据转化为可操作的轨迹信息&#xff0c…...

告别虚拟机卡顿:在Ubuntu 18.04双系统上,用ROS Melodic和MoveIt!为机械臂仿真铺路

告别虚拟机卡顿&#xff1a;Ubuntu 18.04双系统下的ROS机械臂仿真环境搭建指南 当你在虚拟机上运行Gazebo机械臂仿真时&#xff0c;是否经历过画面卡成PPT的绝望&#xff1f;或是看着YOLOv5目标检测模型训练进度条几乎停滞的崩溃&#xff1f;这些性能瓶颈的根源&#xff0c;往往…...

实战篇:杰理AC632N板级配置与低功耗管理解析

1. 杰理AC632N开发板核心配置解析 第一次拿到杰理AC632N开发板时&#xff0c;很多开发者都会遇到一个共同问题&#xff1a;官方资料不完整。这时候就需要我们通过阅读源码来理解板级配置。board_ac632n_demo.c这个文件就像开发板的"身份证"&#xff0c;记录着所有关键…...

Qwen-Image+RTX4090D真实效果:Qwen-VL在新闻配图理解与事件摘要生成中的表现

Qwen-ImageRTX4090D真实效果&#xff1a;Qwen-VL在新闻配图理解与事件摘要生成中的表现 1. 开篇&#xff1a;当视觉大模型遇见专业显卡 想象一下这样的场景&#xff1a;你正在浏览一篇国际新闻&#xff0c;文章配有复杂的现场图片。传统的AI可能只能识别图片中的基本元素&…...