学习笔记整理-JS-03-表达式和运算符

news2024/11/25 16:22:27

[[toc]]

一、表达式和运算符

1. 表达式

expression.png

  • 表达式种类
    • 算术、关系、逻辑、赋值、综合

二、JS基本表达式

1. 算术运算符

意义运算符
+
-
*
/
取余%
  • 加减乘除

    • 加减的符号和数学一致,乘号是*号,除法是/
    • 默认情况,乘除法的优先级高于加法和减法;必要时可以使用圆括号来改变运算的顺序。
  • 加号的两种作用

    • 加号有"加法"和"连字符"两种作用
    • 如果加号两边的操作数都是数字,则为"加法",否则为连字符。
  • 取余运算

    • 取余运算也叫作“求模运算”,用百分号%表示
    • a%b表示求a除以b的余数,它不关心整数部分,只关心余数
          11 % 4;   //3, 因为11除以4余数是3
          20 % 6;   //2, 因为20除以6余数是2
          12 % 3;   //O, 因为能够整除,余数是0
          3 % 9;    //3, 因为商0,余数是3  
      
  • 隐式类型转换

    • 如果参与数学运算的某操作数不是数字型,那么JavaScript会自动将此操作数转换为数字型
        3 * '4' // 12
      
    • 隐式转换的本质是内部调用Number()函数
      Number(true)// ---> 1  true + true // 2
      Number(false)//---> 0  false + 2   // 2
      3 * '2天'                          // NaN    
      
  • 有关IEEE754

    • JavaScript中,有些小数的数学运算不是很精准
      0.1 + 0.2 // 0.30000000000000004
      
    • JavaScript使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生丢失精度问题
      • 解决办法:在进行小数运算时,要调用数字的toFixed()方法保留指定的小数位数
  • 幂和开根号

    • JavaScript中没有提供幂计算、开根号的运算符。需要使用Math对象的相关方法进行计算。
        Math.pow(2,3)  // 8  
        Math.pow(3,2)  // 9
        Math.sqrt(81)  // 9
        Math.sqrt(-81) // NaN
      
  • 向上取整和向下取整

    • Math.ceil()向上取整;Math.floor()向下取整
          Math.ceil(2.4)   // 3
          Math.floor(2.4)  // 2   
       
          Math.ceil(-2.4)   // -2
          Math.floor(-2.4)  // -3     
      
          Math.ceil(2)   // 2
          Math.floor(2)  // 2     
      

2. 关系运算符

意义运算符
大于>
小于<
大于或等于>=
小于或等于<=
等于=
不等于!=
全等于===
不全等于!==
  • 大于和小于

    • 大于>、小于<两个符号和数学相同
  • "大于等于"运算符是>=,"小于等于"运算符是<=

  • 判断是否相等

    • 如果想比较两个值是否相等,此时应该使用==运算符
    • JavaScript中等号=表示赋值,而并不是相等,判断相等应该使用==运算符。
    • 相等和全等
      • 两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等
      • 三个等号===运算符,不仅比较值是否相同,也比较类型是否相同
          1 == true   // true
          1 === true  // false
        
          0 == false  // true
          0 === false // false
        
          0 == undefined // false
          0 === undefined // false
        
          undefined == null // true
          undefined === null // false
        
      • nullundefined==进行比较涉及隐式强制类型转换,ES5规范中规定:
        • 如果xnull,yundefined,则结果为true
        • 如果xundefined,ynull,则结果为true
      • nullundefined===比较时结果为false是因为类型不同:
        • typeof null --> object
        • typeof undefined --> undefined
      • NaN不自等
        • NaN作为一个特殊的数字类型值,它在用==比较的时候也有特殊的结果
              NaN == NaN  // false
              NaN === NaN // false
          
      • 如何判断某变量值为NaN
        • isNaN()函数可以用来判断变量值是否为NaN
              isNaN(NaN)  // true
              isNaN(5)    // false
          
        • isNaN()也不好用,它的机理是:只要该变量传入Number()的执行结果是NaN,则isNaN()函数都会得到true
            isNaN(undefined)  // true
            isNaN('3天')      // true
            isNaN(null)       // false
          
      • 不相等和不全等
        • !=表示不相等
        • !==表示不全等
         5 != 6   // true
         5 !== 6  // true
        
         5 != '5'   // false
         5 !== '5'  // true
        
      • js中没有连比,绝对不可能存在3 <= a <= 15

3. 逻辑运算符

非:! 与:&& 或:||

  • !表示"非",也可以称为"置反运算"
  • !是一个"单目运算符",只需要一个操作数
  • 置反运算的结果一定是布尔值
      !true         // false
      !false        // true    
      !0            // true    
      !undefined    // true
      !''           // true
      !'zhangsan'   // false
    
      !!true        // true
      !!0           // false
      !!''          // false
      !!'zhangsan'  // true                
    

4. 与运算符

  • &&表示"并且",称为"与运算",全真才为真
  • 短路原则
    • a && b 运算中:a真,表达式值为b,a假,表达式值为a
        3 && 6           // 6
        undefined && 15  // undefined
        15 && undefined  // undefined
        null && 2        // null
        '' && 16         // ''
        NaN && undefined // NaN  
      

5. 或运算符

  • ||表示"或者",称为"或运算",有真就真
  • a || b运算中:a真,表达式值为a, a假,表达式值为b
      3 || 6          // 3
      0 || 6          // 6
      null || undefined // undefined
      'a' || 'b'      // 'a'
      NaN || null     // null
    
  • 逻辑值运算
      true && true   // true
      true && false   // false
      false && true   // false
      false && false   // false   
    
      true || true   // true
      true || false   // true
      false || true   // true
      false || false   // false         
    
  • 逻辑运算顺序
    • 逻辑运算的优先级是:非--> 与--> 或
        !true || true     // ture
        3 && 4 || 5 && 6  // 4
      

6. 赋值表达式

意义运算符
赋值=
``````+=
-=
快捷赋值*=
/=
``````%=
自增运算++
自减运算
  • JS中,=表示赋值,==判断是否相等(不判断类型),===判断是否全等。
  • 赋值运算符会将等号右边的数值,赋予等号左边的变量。
  • 赋值运算也会产生值
    equal.png
  • 快捷赋值
    equal-1.png
    equal-2.png

7. 自增/自减运算法

increment.png
increment-1.png

8. 综合表达式

  • 运算顺序
    synthesis.png
  • 变量的范围表示
    synthesis-1.png

9. 重点内容

  • 表达式有哪几种? 每种表达式分别有哪些运算符?
  • 每种表达式中运算顺序是什么?综合运算顺序是什么?
  • 什么是短路计算? 3 && 11 的结果是多少? 3 || 13 呢?
  • a ++ 和 ++ a 有什么区别?
      var a = 3;
      var b = 4;
      console.log(a++ + b++ + ++a + ++b); // 18
    

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

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

相关文章

【软件工程】软件测试

软件测试的对象 软件程序文档 测试对象&#xff1a;各个阶段产生的源程序和文档。 软件测试的目的 基于不同的立场&#xff0c;对软件测试的目的存在着两种完全对立的观点。 &#xff08;1&#xff09;一种观点是通过测试暴露出软件中所包含的故障和缺陷(从用户的角度)&#xf…

ORB-SLAM2第一节---单目地图初始化

单目初始化 1.前提条件&#xff08;640*480&#xff09; 参与初始化的两帧各自的特征点数目都需要大于100.两帧特征点成功匹配的数目需要大于或等于100.两帧特征点三角化成功的三维点数目需要大于50. 2.针对条件三 流程如下 记录当前帧和参考帧&#xff08;第一帧&#xff…

计算机组成原理 汇编语言

..................................................

fastadmin采坑之页面调转

这里有个业务需求&#xff0c;就是一个表格页面添加一个报名按钮&#xff0c;这个报名按钮就对应另外一个表格页面的新增&#xff0c;那就不用单独写个报名页面了&#xff0c;直接添加一个报名按钮&#xff0c;然后按钮的url直接指向另外一个页面的新增页面&#xff0c;真的很方…

[vscode]vscode运行cmake时候exe不执行而且前面多一些字符

遇到一个奇怪问题,你单独打开cmd去执行vscode编译过程序没问题&#xff0c;但是你在vscode确不会执行&#xff0c;这是因为vscode没有读取到电脑环境变量导致加载DLL失败&#xff0c;但是在vscode终端不会给你提示少DLL&#xff0c;需要你自己把DLL复制到exe目录即可解决问题。…

CDH6.3应知应会

文章目录 1. CDH 简介1.1 CDH版本 2. CDH 集群的优势是什么&#xff1f;3. CDH 集群的部署方式有哪些&#xff1f;4. CDH 集群中如何进行故障排除和监控&#xff1f;5. 你有使用 CDH 部署集群的经验吗&#xff1f;6. CDH 集群如何实现高可用性&#xff1f;7. 在 CDH 集群中&…

Qt Bridge for Adobe Photoshop安装

*社区版没有这个文件夹无法安装&#xff0c;可以下载企业用的&#xff0c;然后给money&#xff0c;不多也就316刀&#xff0c;折合人民币2千多&#xff0c;或者试用10天。 ** B站找到的文章&#xff08;作者&#xff1a;原版英语 https://www.bilibili.com/read/cv17933098 出…

Redis进阶(4)——结合redis.conf配置文件深入理解 Redis两种数据持久化方案:RDB和AOF

目录 引出持久化方案RDBAOF Redis的持久化方案RDB如果采用docker stop关闭如果采用强制关闭 AOF参数设置混编方式的加载让aof进行重写 两种持久化方案的优缺点AOF优缺点RDB优势和劣势 总结 引出 1.Redis数据持久化的两种方式&#xff0c;RDB和AOF; 2.RDB采用二进制存储&#xf…

PHP8的字符串操作1-PHP8知识详解

字符串是php中最重要的数据之一&#xff0c;字符串的操作在PHP编程占有重要的地位。在使用PHP语言开发web项目的过程中&#xff0c;为了实现某些功能&#xff0c;经常需要对某些字符串进行特殊的处理&#xff0c;比如字符串的格式化、字符串的连接与分割、字符串的比较、查找等…

redis设置database 不生效剖析

设置database 不生效剖析 前言配置加载类问题commons-pool 对象池 主页传送门&#xff1a;&#x1f4c0; 传送 前言 事情是这样的 今天在拉取了同事的代码做redis缓存设置的时候&#xff0c;发现即使已经设置了database, 但是存数据的时候还是用的默认0数据库。这引起了我的好…

Java-类型和变量(基于C语言的补充)

一个简单的Java程序 args){ System.out.println("Hello,world"); } }通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构由如下三个部分组成&#xff1a; 1.源文件&#xff08;扩展名为*.java)&#xff1a;源文件带有类的定义…

通过金字塔模型拥抱企业数字化转型

企业要实施成功的数字化营销转型改革&#xff0c;需要践行如下金字塔模型&#xff0c;从上至下依次是认知&#xff0c;应用&#xff0c;流程和组织&#xff0c;我们一一来拆解。 01 认知层 处于最顶层的是认知层&#xff0c;数字化营销的认知没有建立&#xff0c;很难实施彻头…

用python来爬取某鱼的商品信息(2/2)

目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭&#xff08;可选&#xff09; 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie&#xff08;出错&#xff09; 导入cookie&#xff08;修改后&…

阿里云云主机_ECS云服务器_轻量_GPU_虚拟主机详解

阿里云云主机分为云虚拟主机、云服务器ECS、轻量应用服务器、GPU云服务器、弹性裸金属服务器、专有宿主机、FPGA云服务器、高性能计算E-HPC、无影云电脑等&#xff0c;阿里云百科来详细说下阿里云云主机详解&#xff1a; 目录 阿里云云主机 云服务器ECS 轻量应用服务器 云…

vitis如何更新xsa?

在zynq调试时&#xff0c;经常需要更新xsa文件&#xff0c;更新步骤如下&#xff1a; 在platform_project选择Update Hardware Specation 选择对应的xsa文件 提示更新完成 复位BSP 把platform_project clean一下&#xff0c;然后重新build 再refresh application project&…

项目实战 — 消息队列(9){编写demo程序}

消息队列服务器核心功能就是&#xff0c;提供了虚拟主机&#xff0c;交换机&#xff0c; 队列&#xff0c;消息等概念的管理&#xff0c;实现三种典型的消息转发方式&#xff0c;可以实现跨主机/服务器之间的生产者消费模型。 这里&#xff0c;就编写一个demo&#xff0c;实现…

动动小手搭建私人大模型人工智能私人助理

引言&#xff1a; 去年12月OpenAI公司的ChatGPT3.5彻底引爆人工智能圈&#xff0c;今年国内大公司争相进入大模型的赛道&#xff0c;打造自己的大模型。前些日子的世界人工智能大会上&#xff0c;可谓是百模大战&#xff0c;热闹纷呈。 ChatGPT的出现&#xff0c;的确给人们带…

(2)linux虚拟机配置中文输入法和如何下载软件

&#xff08;一&#xff09;配置中文输入法&#xff1a; 1、sudo apt-get install fcitx&#xff0c;安装fcitx框架&#xff0c;安装完成之后&#xff0c;选择该框架 2、接下来输入sudo apt-get install fcitx fcitx-googlepinyin&#xff0c;安装谷歌输入法之后&#xff0c;重…

[LitCTF 2023]1zjs

这里一点想法没有看看源代码 查找flag没有发现 查找.php 有所发现 看起来是一种加密方式&#xff0c;查找 jsfuck NSSCTF{bd1[]f7[]3[]c8[]-9[]c5[]c-4[]c6[]4[]-a7[]2[]7[]-6[]7[]3[]b4[]4[]2[]6[]efbc}

Programming abstractions in C阅读笔记:p107-p110

《Programming Abstractions In C》学习第46天&#xff0c;p107-p110&#xff0c;3.1小节——“The concept of interface”&#xff0c;总结如下&#xff1a; 一、技术总结 1.client p108&#xff0c;调用library的program称为client。 2.interface p108&#xff0c;“To do …