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

news/2025/4/1 3:29:29/

[[toc]]

一、表达式和运算符

1. 表达式

expression.png

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

二、JS基本表达式

1. 算术运算符

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

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

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

    • 取余运算也叫作“求模运算”,用百分号%表示
    • a%b表示求a除以b的余数,它不关心整数部分,只关心余数
          11 % 4;   //3, 因为11除以4余数是320 % 6;   //2, 因为20除以6余数是212 % 3;   //O, 因为能够整除,余数是03 % 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)  // 9Math.sqrt(81)  // 9Math.sqrt(-81) // NaN
      
  • 向上取整和向下取整

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

2. 关系运算符

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

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

  • 判断是否相等

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

5. 或运算符

  • ||表示"或者",称为"或运算",有真就真
  • a || b运算中:a真,表达式值为a, a假,表达式值为b
      3 || 6          // 30 || 6          // 6null || undefined // undefined'a' || 'b'      // 'a'NaN || null     // null
    
  • 逻辑值运算
      true && true   // truetrue && false   // falsefalse && true   // falsefalse && false   // false   true || true   // truetrue || false   // truefalse || true   // truefalse || false   // false         
    
  • 逻辑运算顺序
    • 逻辑运算的优先级是:非--> 与--> 或
        !true || true     // ture3 && 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.ppmy.cn/news/1030653.html

相关文章

Windows子系统相关问题

有一天&#xff0c;我需要安装Android的模拟器加速器&#xff0c;但是提示我要禁用Hyper-v&#xff0c;于是到控制面板中给它禁用了&#xff0c;禁用后需要重启&#xff0c;重启后再安装Android的模拟器加速器&#xff0c;还是提示我Hyper-v没禁用&#xff0c;百度后发现还需要…

10.Eclipse配置Tomcat详细教程、如何使用Eclipse+tomcat创建并运行web项目

一、Tomcat的下载官网 -> 进入官网显示如图所示的界面&#xff0c;在下下载的是Tomcat9.0版本&#xff0c;你可以自己选一款 点击然后进入下面这个界面 最好是在你的D盘建立一个文件夹&#xff0c;把它解压在里面&#xff0c;文件夹名自己来吧&#xff0c;自己能知道里面装…

PyQt5同一界面实现不同窗口跳转

目录 一、目的 二、QStacked Widget 二、QTabWidget 三、实战演示 1、在Qt Designer中编辑界面文件 2、编写逻辑文件用于显示 四、QStackedWidget、QTabWidget可以相互嵌套使用,效果奇佳 五、附录——生成新的窗口进行跳转,跳转的同时关闭另外一个界面 1、第一个跳转…

2023国赛 高教社杯数学建模ABCDE题思路汇总分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

从0-1实现简易Raft分布式共识算法

一、Raft前置简介 Raft目前是最著名的分布式共识性算法&#xff0c;被广泛的应用在各种分布式框架、组件中&#xff0c;如Redis、RocketMq、Kafka、Nacos&#xff08;CP&#xff09;等 根据Raft论文&#xff0c;可将Raft拆分为如下4个功能模块&#xff1a; 领导者选举日志同…

Uniapp Syntax Error: Error: Unbalanced delimiter found in string

报错 in ./src/pages/user/components/tasks.vue?vue&typescript&langjs&Syntax Error: Error: Unbalanced delimiter found in string...这边导致文件的原因&#xff1a;可能是条件编译语法不小心删了某个字符&#xff0c;导致不全&#xff0c;无法形成一对。 //…

预测知识 | 机器学习预测模型局限性

预测知识 | 机器学习预测模型局限性 目录 预测知识 | 机器学习预测模型局限性问题描述未来发展参考资料 问题描述 数据基础设施&#xff1a;要构建模型&#xff0c;必须有数据&#xff0c;且有多来源的大数据。这一切都离不开数据基础设施的建设和发展。 错误数据输入&#xf…

安全问题「一锅端」,数据安全风险评估落地实践

数据安全风险评估是《数据安全法》明确的数据安全基础制度之一&#xff0c;也是重要数据处理者应尽的数据安全保护义务。今年5月&#xff0c;《网络安全标准实践指南—网络数据安全风险评估实施指引》发布&#xff0c;作为数据安全领域的一项重磅级指引&#xff0c;明确提出了网…