【分享】这篇教程助力你成为 JavaScript 糕手!(四)
第四章:运算符与表达式

4.1 算术运算符

加法运算符(+):用于数字相加,如console.log(5 + 3);结果为8。
当用于字符串时,它表示字符串拼接。例如console.log(‘Hello’+ ‘world’);输出Hello world。如果一个操作数是字符串,另一个操作数是其他类型(如数字),JavaScript 会将另一个操作数转换为字符串后再拼接。
减法运算符(-):用于数字相减,如console.log(7 - 2);结果为5。
乘法运算符()*:用于数字相乘,如console.log(4 * 6);结果为24。
除法运算符(/):用于数字相除,如console.log(8 / 2);结果为4。当除数为0时,在 JavaScript 中会得到Infinity(被除数为正数时)或-Infinity(被除数为负数时),而0 / 0会得到NaN。
取模运算符(%):返回除法运算的余数。例如console.log(7 % 3);结果为1。常用于判断数字的奇偶性(对2取模,余数为0是偶数,余数为1是奇数)等场景。
自增运算符(++)和自减运算符(–): 自增运算符有前置(++i)和后置(i++)两种形式。前置自增是先将变量的值加1,然后再使用变量的值;后置自增是先使用变量的值,然后再将变量的值加1。
var i = 5;
console.log(++i); // 输出6,i的值变为6
var j = 5;
console.log(j++); // 输出5,j的值变为6
自减运算符同理,前置自减(–i)先减1再使用,后置自减(i–)先使用再减1。
4.2 比较运算符
相等运算符(==):比较两个值是否相等,在比较时会进行类型转换。例如console.log(5 == ‘5’);结果为true,因为 JavaScript 会将字符串’5’转换为数字5后再比较。
严格相等运算符(===):比较两个值是否相等且类型也相同。例如console.log(5 === ‘5’);结果为false,因为它们类型不同;而console.log(5 === 5);结果为true。
不等运算符(!=):与相等运算符==相反,比较两个值是否不相等,会进行类型转换。例如console.log(5!= ‘5’);结果为false。
严格不等运算符(!==):与严格相等运算符=相反,比较两个值是否不相等且类型也不同。例如console.log(5! ‘5’);结果为true。
大于(>)和小于(<)运算符:用于比较两个数字的大小。例如console.log(8 > 3);结果为true,console.log(2 < 1);结果为false。如果比较的操作数不是数字类型,JavaScript 会尝试将其转换为数字后再比较,但这种转换可能会导致意外结果,比如console.log(‘8’ > ‘3’);结果为true(因为字符串会按字符编码值比较)。
大于等于(>=)和小于等于(<=)运算符:功能类似大于和小于运算符,只是包含等于的情况。例如console.log(5 >= 5);结果为true。
4.3 逻辑运算符
逻辑与运算符(&&):
当使用&&连接两个表达式时,只有当两个表达式的值都为true时,整个逻辑表达式的值才为true;如果第一个表达式的值为false,则不会计算第二个表达式(短路求值)。例如:
var a = 5;
var b = 10;
console.log((a > 3) && (b > 5)); // 结果为true
console.log((a > 10) && (b > 5)); // 结果为false,因为a > 10为false,不会计算b > 5
逻辑或运算符(||):
当使用||连接两个表达式时,只要其中一个表达式的值为true,整个逻辑表达式的值就为true;如果第一个表达式的值为true,则不会计算第二个表达式(短路求值)。例如:
var c = 3;
var d = 7;
console.log((c > 5) || (d > 5)); // 结果为true,因为d > 5为true,不会计算c > 5是否为true
console.log((c > 5) || (d < 5)); // 结果为false,因为c > 5和d < 5都为false
逻辑非运算符(!):对一个表达式的值取反。如果表达式的值为true,则!运算后的值
为false;如果表达式的值为false,则!运算后的值为true。例如console.log(!(5 > 3));结果为false。
4.4 赋值运算符
基本赋值运算符(=):将右边的值赋给左边的变量。例如var x = 5;。
加法赋值运算符(+=):a += b等价于a = a + b。例如var num1 = 5; num1 += 3;此时num1的值为8。
减法赋值运算符(-=):a -= b等价于a = a - b。
乘法赋值运算符(=)*:a *= b等价于a = a * b。
除法赋值运算符(/=):a /= b等价于a = a / b。
取模赋值运算符(%=):a %= b等价于a = a % b。
4.5 其他运算符
三元运算符(? :):语法为条件表达式? 表达式1 : 表达式2。如果条件表达式的值为true,则执行表达式1;如果条件表达式的值为false,则执行表达式2。例如var max = (5 > 3)? 5 : 3;,max的值为5。
相关文章:
【分享】这篇教程助力你成为 JavaScript 糕手!(四)
第四章:运算符与表达式 4.1 算术运算符 加法运算符():用于数字相加,如console.log(5 3);结果为8。 当用于字符串时,它表示字符串拼接。例如console.log(‘Hello’ ‘world’);输出Hello world。如果一个操…...
双亲委派模型的破坏
双亲委派模型的第一次“被破坏”其实发生在双亲委派模型出现之前--即JDK1.2发布之前。由于双亲委派模型是在JDK1.2之后才被引入的,而类加载器和抽象类java.lang.ClassLoader则是JDK1.0时候就已经存在,面对已经存在 的用户自定义类加载器的实现代码,Java设计者引入双亲委派模…...
Android关机流程知多少?
在 Android 中,关机流程涉及系统各个组件的协同工作,确保设备在断电之前能够安全地关闭所有活动并保存数据。以下是 Android 系统中关机流程的详细介绍: 1. 用户触发关机请求 关机流程由用户的操作触发,通常有以下几种方式&#…...
深入理解指针end(总结篇)
如果有不会的智识点,请移动到博主前四篇指针博客! 可以当一个指针智商检阅博客看。 看看你是否掌握了这些知识 1:内存,指针变量 内存单元的编号地址指针; 指针变量和其他变量没有区别,指针变量是来存放…...
C# 程序暂停的两种方式
C# 程序暂停的两种方式:EventWaitHandle 与 volatile bool pause 在C#中,线程控制是多线程编程的重要组成部分,其中实现暂停的需求经常出现。本文将详细探讨使用EventWaitHandle和设置volatilebool来实现线程暂停的不同方式,它们…...
【LeetCode】【算法】160.相交链表
Leetcode 160. 相交链表 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 思路 AB,一个指针,访问完A访问B;另一个指针&#…...
光伏破局 引领能源革命
为进一步推进商业信用体系建设,促进企业诚实守信经营,面向企业普及诚信与品牌建设的意义,指导企业加强诚信品牌建设,提升其整体竞争力,“崛起的民族品牌”专题系列节目以诚信为内涵,在全国范围内遴选出有行…...
Jenkins声明式Pipeline流水线语法示例
系列文章目录 docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等) docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法 文章目录 系列文章目录jenkins流水线基础1、pipeline1.1、什么是pipeline?1.2、为什么使用pi…...
互联网技术净土?原生鸿蒙开启全新技术征程
鸿蒙生态与开发者的崭新机会 HarmonyOS NEXT承载着华为对未来操作系统的深刻理解,如今已发展为坚实的数字底座。它不仅在技术层面取得了全面突破,还在中国操作系统市场中站稳了脚跟。 当前,HarmonyOS NEXT的代码行数已超过1.1亿,…...
关于Django 模型字段 `choices`自定义数据类型的枚举——补充
文章目录 1. 处理 datetime 类型的 choices2. 处理 time 类型的 choices3. 处理 Decimal 类型的 choices4. 处理 UUID 类型的 choices5. 处理 float 类型的 choices 在 Choices 类的基础上扩展,可以将 choices 与特定数据类型(如 date 或 datetime&a…...
CAP理论的延申--BASE理论
上一篇文章我简单介绍了一下什么是CAP理论,本篇文章讲解一下随着技术的演变,CAP理论是如何发展为BASE理论的。 CAP理论回顾 首先我们回顾一下CAP理论,CAP理论指得是分布式系统发生网络等故障时,不同节点之间无法同步数据…...
【傻呱呱】phpMyAdmin怎样给特定用户授权特定数据库权限?
前期准备 phpMyAdmin数据库(MySQL) END...
『VUE』21. 组件注册(详细图文注释)
目录 组件注册局部注册全局注册全局注册示例总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 组件注册 组件注册有两种方式:全局注册和局部注册。全局注册只需要注册依次,其他组件可以直接调用无需再次像局部注册一…...
如何产看SQL 查询的执行时间
要查看 SQL 查询的执行时间,尤其是毫秒级别,可以使用以下几种方法: 方法 1:使用 SET STATISTICS TIME 查看执行时间 SET STATISTICS TIME 会显示执行时间的详细信息,包括 CPU 时间和总耗时。启用后,SQL S…...
计算机网络——路由器构成
算路由表是分布式去算——你算你的,我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题...
架构师之路-学渣到学霸历程-48
实现域名跳转的实验 今天继续还是分享域名跳转的实验;继续整,看看效果 意思就是你本来访问www.liangjiawei.net的网站然后跳转到blog.liangjiawei.net的网站 1、基础的环境部署 安装好nginx(这里最好的就是干净的环境)创建两个…...
HappyChart——一款简单好用的专业绘图软件
HappyChart是一款新出的专业绘图软件,灵感来自于类PS软件,它是以图层的方式进行绘图。相比与Excel图表或其他专业绘图软件,HappyChart界面简洁明了,操作简单,没有复杂的选项,它只调整绘图相关参数即可实时展…...
【Linux】进程信号全攻略(二)
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 再谈信号的捕捉 🦋 关于信号捕捉的细节部分(sigaction函数) 二:🔥 穿插话题 - 操作系统是怎么运…...
redis用法(二)
文章目录 02-redis数据类型篇生产环境下的redis实况图 1.全局命令redis数据存储格式set设置k-v查看当前redis的key的数量危险命令,新手请在于超老师陪同下执行为什么危险?如何正确搜索redis的key 查看库下有多少个key查询redis库信息切换redis库查看key是…...
Python-利用os,tkinter库编写一个伪恶意程序文件(Pro版)
前言:上一期我们简单学习了如何编写一个多次弹窗警告用户的exe伪恶意文件。我们知道了把Python初始文件编译为exe文件后,程序在没有Python环境的情况下也能正常运行。我们上次编写的程序仅仅只是伪造系统正在执行关机命令前的倒计时的假象,实…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
