JavaScript 入门基础 - 运算符(三)

news2024/10/1 5:30:44

JavaScript 入门基础 - 运算符(三)


文章目录

  • JavaScript 入门基础 - 运算符(三)
    • 1.什么是运算符
    • 2.表达式和返回值
    • 3.算术运算符概述
    • 4. 赋值运算符
    • 5.递增和递减运算符
      • 5.1 递增和递减运算符概述
      • 5.2 递增运算符
        • 5.2.1 前置递增运算符
        • 5.2.2 后置递增运算符
        • 5.2.3 后置和前置运算符的区别
    • 6. 比较运算符
    • 7. 逻辑运算符
      • 7.1 逻辑运算符概述
      • 7.2 逻辑与
      • 7.3 逻辑或
      • 7.4 逻辑非
      • 7.5 逻辑与短路运算(逻辑中断)
      • 7.6 逻辑或短路运算
      • 7.7 短路运算应用
    • 8. 运算符优先级


1.什么是运算符

运算符又称为操作符,是用于实现赋值、比较以及算术运算等功能的符号。

2.表达式和返回值

表达式就是由数字、运算符、变量等可以求得数值,且有意义的排列所得到的组合,通俗来讲就是由数字、变量和运算符等所组成的式子。比如:1+1=2、100-100 = 0。
从上面的例子我们知道表达式都会有一个结果,返回给我们,我们就称为返回值

// 在程序中我们往往是把返回值赋给变量
var sum = 12 + 34;  // 右边计算得到返回值赋给左边的变量
console.log(sum); // 结果为 46

3.算术运算符概述

算术运算符用于执行两个变量的算术运算。具体如下:
在这里插入图片描述

  1. 加减乘除和数学运算差不多,运算符 = 用于给js变量赋值:
var x = 11; // 把 12 赋值给 x 变量
var y = 22;
var num1 = x + y; // 把两个变量的值相加
var num2 = x - y; // 两数相减
var num3 = x * y; // 两数相乘
var num4 = x / y; // 两数相除
console.log(num1); // 结果为 33
console.log(num2); // -11
console.log(num3); // 242
console.log(num4); // 0.5

注意:在计算浮点数时,输出结果会有问题,因为浮点数的最高精度为17位小数:

var num1 = 0.1;
var num2 = 0.2;
var sum = num1 + num2;
console.log(sum); // 输出结果为 0.30000000000000004
// 所以两个浮点数不能进行比较是否相等
  1. 取余的符号跟数学当中的除号一样,但两者仅仅知识模样长得像,作用却大不相同。取余是两者相除,取余数,且余数总是与被除数的符号一致,具体代码如下:
var num1 = 15;
var num2 = 3;
var num3 = -25;
var num4 = 7;
var x = num1 % num2;
var y = num3 % num4;
console.log(x); // 0
console.log(y); // -4

注意:如果被除数为 NaN ,那么结果为 NaN。

var result = NaN % 2;
console.log(result); // 结果为 NaN

4. 赋值运算符

赋值运算符用于给 JavaScript 变量赋值,具体如下:
在这里插入图片描述

// = 是直接赋值
var num = 15;
// +=、-=、*=、/=、%=是先进行运算再赋值
num += 1; // 相当于 num = num + 1
num -= 1; // 相当于 num = num - 1
num *= 10; // 相当于 num = num * 10

5.递增和递减运算符

5.1 递增和递减运算符概述

对数字变量实现反复加一或者减一操作,可以使用递增运算符( ++ )和递减运算符( ),在js中,递增和递减运算符既可以放在变量的前面,也可以放在变量的后面,注意必须配合变量使用:

  • 放在变量前面时,我们称为前置递增(递减)运算符

  • 放在变量后面是,我们称为后置递增(递减)运算符

5.2 递增运算符

5.2.1 前置递增运算符

前置递增运算符写在变量的前面,如:++num,表示自加一,相当于 num = num + 1,但++num更简单。

var age = 18;
++age; // 相当于 age = age + 1

5.2.2 后置递增运算符

后置递增运算符写在变量后面,也表示自加一,写法更简单,它是先返回原值后自加。

var age = 20;
age++; // 相当于 age = age + 1

5.2.3 后置和前置运算符的区别

两者如果单独使用,效果是一样的,但在计算过程中有点区别,在与其他代码一起用时,执行结果会不同,前置是先自增后返回值,而后置是先返回值,然后再自加:

// 前置递增运算符
var num = 10;
console.log(++num + 1); // 结果是12,因为num先自加一变11,返回,再加1
// 后置递增运算符
var age = 15;
console.log(age++ + 5); // 结果是20,因为后置先返回原值,再加1
console.log(age); // 结果是16,是自加的结果

注意:在开发中一般使用后置递增(递减)运算符。

6. 比较运算符

比较运算符用于两个数据之间的比较,运行结果为一个布尔类型的值
在这里插入图片描述

console.log(2 == 4); // false
console.log(54 <= 134); // true
console.log(19 === '19'); // false, 全等符号要求两侧的值和数据类型都一模一样,才为真(true)

7. 逻辑运算符

7.1 逻辑运算符概述

逻辑运算符主要用来执行布尔值运算,其返回值为布尔值,主要用于条件判断:
在这里插入图片描述

7.2 逻辑与

&&(逻辑与)两边的值都是true才返回true,否则返回false

var result = 2 > 1 && 5 > 3; // true
var outcome = 10 > 100 && 4 > 1; // false

7.3 逻辑或

||(逻辑或)只要有一个为true,就返回true,如果两边都是false就返回false

var result = 34 > 12 || 12 > 34; // true
var outcome = 23 < 12 || 56 < 45; // false

7.4 逻辑非

逻辑非(!)也叫取反符,是用于取一个布尔值的相反值,比如true的相反值为false

var sayOk = !true;
console.log(sayOk); // false

7.5 逻辑与短路运算(逻辑中断)

短路运算:当有多个表达式(值)时,左边表达式的值可以确定,就不会运算右边的表达式。

逻辑与短路运算

  • 语法:表达式1 && 表达式2
  • 如果表达式1为真,则返回表达式2(自真返他)
  • 如果表达式1为假,则返回表达式1(自假返自)
console.log(0 && 23); // 结果为0,因为0为假,返回0本身
console.log(123 && 356); // 结果为356,因为123为真,返回356 

7.6 逻辑或短路运算

  • 语法:表达式1 || 表达式2
  • 如果表达式1为真,则返回表达式1(自真返自)
  • 如果表达式1为假,则返回表达式2(自假返他)
console.log(123 && 345); // 结果为123
console.log(0 && 467); // 467

7.7 短路运算应用

逻辑中断非常重要,它会直接影响程序的运行结果:

var age = 18;
console.log(345 || age++); // 345为真,返回,不执行age++
console.log(age); // 值还是18,因为age++没有执行

8. 运算符优先级

在这里插入图片描述

  • 逻辑与的优先级比逻辑或高

  • 一元运算符中的逻辑非优先级很高

  • 先算优先级高的再算优先级低的

  • 优先级相等从左到右开始计算

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

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

相关文章

Ajax(1)---了解Ajax和XML

目录 Ajax XML了解 Ajax的特点 HTTP协议请求报文与响应文本结构 HTTP 请求报文 响应报文 Ajax AJAX全称为Asynchronous JavaScript And XML&#xff0c;就是异步的JS和XML通过AJAX可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势:无刷新获取数据。AJAX不是新…

一篇带你彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 一篇带你彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收…

MySQL 大表优化方案

单表优化 读写分离 缓存 表分区 垂直拆分 水平拆分 兼容MySQL且可水平扩展的数据库 NoSQL 当MySQL单表记录数过大时&#xff0c;增删改查性能都会急剧下降&#xff0c;可以参考以下步骤来优化&#xff1a; 单表优化 除非单表数据未来会一直不断上涨&#xff0c;否则不…

通过Django发送邮件

通过Django发送邮件非常的简单&#xff0c;在Python中已经内置了一个smtplib邮件发送模块&#xff0c;Django在此基础上进行了简单地封装&#xff0c;我们可以在Django的环境中方便的发送邮件。大部分邮件发送成功主要是邮件的参数配置&#xff0c;本文以常用的126邮箱和QQ邮箱…

《2022中国数据智能产业图谱3.0版》重磅发布

‍数据猿出品本次“数据猿行业盘点季大型主题策划活动——《2022中国数据智能产业图谱3.0版》”为2022年度图谱版本的升级更新版&#xff0c;下一次版本迭代将于2023年4月底发布2023年1.0版&#xff0c;敬请期待&#xff0c;欢迎报名。‍数据智能产业创新服务媒体——聚焦数智 …

svn修改提交日志信息

参考&#xff1a;唐小码个人博客 一、svn修改提交的msg信息和作者信息 鼠标右键找到show log> 选择要修改的日志行&#xff0c;第一个是修改作者信息&#xff0c;第二个是修改日志信息 二、svn修改提交的日期信息 修改日期信息的话&#xff0c;你得先有svn服务器的权限&…

光电接收的TIA设计

APD的光电接收电路如下图所示&#xff0c;APD的光电流较SiPM是小很多的&#xff0c;所以需要TIA来做跨阻放大&#xff0c;一般RF电阻要5k到10k左右&#xff0c;光电流一般也就几十uA&#xff0c;这个跨阻放大主要是对Cf大小的选择&#xff0c;Cf的选择主要考虑下面的两点。从放…

【基础强训】day4

一、选择题 &#x1f308;第1题 有以下程序 #include<iostream> #include<cstdio> using namespace std; int main(){ int m0123, n123; printf("%o %o\n", m, n); return 0; } 程序运行后的输出结果是&#xff08;&#xff09; A 0123 0173 B 01…

汇聚数据库创新力量,加速企业数字化转型

2022年12月29日&#xff0c;以“汇聚数据库创新力量&#xff0c;加速企业数字化转型”为主题的openGauss Summit 2022在线上举行。会上&#xff0c;openGauss社区理事会理事长江大勇对外公布了最近社区及生态进展&#xff0c;并宣布推出资源池化架构&#xff0c;实现软硬融合&a…

人脸识别实战教程

人脸识别实战教程 本教程介绍如何使用Alibaba Cloud SDK for Java进行人体属性识别、人体计数和人脸搜索任务。 背景信息 人脸人体识别技术是基于阿里云深度学习算法&#xff0c;结合图像或视频的人脸检测、分析、比对以及人体检测等技术&#xff0c;为您提供人脸人体的检测…

【Java语言】— 运算符、案例:键盘录入

目录运算符1.算术运算符案例&#xff1a;数值拆分2.“”做连接符3.自增自减运算符自增自减的使用事项自增自减的案列4.赋值运算符基本赋值运算符&#xff1a;“”扩展赋值运算符&#xff1a;“”、“-”、“*”、“/”5.关系运算符6.逻辑运算符短路逻辑运算符总结7.三元运算符三…

DAS和NAS

对于有大量数据存储需求的人群可能都听过NAS或者DAS&#xff0c;由两者演化出来的产品也各有不同&#xff0c;但是两者的真正的区别是什么、各有哪些优势和劣势、分别适用哪些人群一直以来也是困扰大家的问题。 DAS全称为直接附加存储(Direct Attached Storage&#xff0c;DAS…

安全用电守护卫士,同为(TOWE)带漏电保护功能桌面PDU插座

随着人民生活水平的提高&#xff0c;人们日常对电的需求量越来越高&#xff0c;尤其是在隆冬季节&#xff0c;很多居民冬季采用电炉、电热毯和空调等取暖&#xff0c;用电负荷较大&#xff0c;一旦出现漏电、过载、短路等问题&#xff0c;很容易引发火灾。据了解&#xff0c;大…

【机器学习】特征工程:时间特征构造以及时间序列特征构造(含源代码理解)

目录&#xff1a;特征工程—时间特征构造以及时间序列特征构造一、前言二、特征构造介绍三、时间特征构造3.1 连续值时间特征3.2 离散值时间特征3.2.1 时间特征拆解3.2.2 时间特征判断3.2.3 结合时间维度的聚合特征四、时间序列特征构造4.1 时间序列聚合特征4.2 时间序列历史特…

PoolFormer实战:使用PoolFormer实现图像分类任务(一)

摘要 论文&#xff1a;https://arxiv.org/abs/2111.11418 论文翻译&#xff1a;https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/128281326 官方源码&#xff1a;https://github.com/sail-sg/poolformer 模型代码解析&#xff1a;https://blog.csdn.net/hhhhhhhh…

超店有数给新手Tik Tok选品的三个建议

给新手Tik Tok选品的三个建议 1)避开饱和的红海类目 比如食品类、美妆个护类的产品&#xff0c;因为竞争过于激烈&#xff0c;一般都是有经验的大卖家操作运营&#xff0c;因为他们会有稳定的供应链、以及足够的成本去支撑&#xff0c;短期盈利比较难&#xff0c;也就是为什么…

企业电子招投标采购系统源码之登录页面

信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、Stre…

(八)大白话MySQL通过配置多个Buffer Pool来优化数据库的并发性能

文章目录1、多线程在访问Buffer Pool的时候需要加锁吗&#xff1f;2、多线程并发访问会加锁&#xff0c;数据库的性能还能好吗&#xff1f;3、MySQL的生产优化经验&#xff1a;多个Buffer Pool优化并发能力100、创作不易&#xff0c;更多章节&#xff0c;请扫码关注&#xff0c…

学而不固,择善固之-杰克教诲

学而不固,择善固之 我也是第一次知道这个词&#xff0c;是受“杰克”大佬教诲。2022-12-30 解释一 学习有时候不是为了马上用起来&#xff0c;有时候只是让我们不再固执&#xff0c;通过学习知道原来世界上还有这么一说&#xff0c;对很多事情保有好奇心。 不持成见地学习&…

spring中为什么要三级缓存?二级不行吗

这是我看过视频中最能解释的文字表达了 先说bean的创建过程&#xff1a;实例化->依赖注入->初始化 实例化之后会提前暴露到缓存&#xff0c;用于解决循环依赖问题。 以下的解释保证你能看懂&#xff1a; 为什么需要一级缓存ioc容器 总得有个地方放那些单例吧 为什么需…