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

[[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.hqwc.cn/news/69629.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter开发实战-实现marquee根据文本长度显示文本跑马灯效果

flutter开发实战-实现marquee文本跑马灯效果 最近开发过程中需要marquee文本跑马灯效果&#xff0c;这里使用到了flutter的插件marquee 效果图如下 一、marquee 1.1 引入marquee 在pubspec.yaml中引入marquee # 跑马灯效果marquee: ^2.2.31.2 marquee使用 marquee使用也是…

C++QT教程3——手册4.11.1自带教程(笔记)——创建一个基于Qt Widget的应用程序

文章目录 创建一个基于Qt Widget的应用程序创建Text Finder项目素材文件 填补缺失的部分设计用户界面完成头文件完成源文件创建资源文件 编译和运行程序 参考文章 创建一个基于Qt Widget的应用程序 本教程介绍如何使用Qt Creator创建一个小型Qt应用程序&#xff0c;名为Text F…

java面试题(16):Mysql一致性视图是啥时候建立的

1 演示错误案例 先给大家来一个错误演示。 我们打开两个会话窗口&#xff0c;默认情况下隔离级别是可重复读&#xff0c;我们来看下&#xff1a; 首先在 A 会话中查看当前 user 表&#xff0c;查看完成后开启事务&#xff1a; 可以看到id3的数据sex是男。 接下来在 B 会话中…

阿里云服务器安装部署Docker使用教程

本文阿里云百科分享如何在云服务ECS实例上&#xff0c;部署并使用Docker。Docker是一款开源的应用容器引擎&#xff0c;具有可移植性、可扩展性、高安全性和可管理性等优势。开发者可将应用程序和依赖项打包到一个可移植的容器中&#xff0c;快速发布到Linux机器上并实现虚拟化…

div 中元素居中的N种常用方法

本文主要记录几种常用的div盒子水平垂直都居中的方法。本文主要参考了该篇博文并实践加以记录说明以加深理解记忆 css之div盒子居中常用方法大全 本文例子使用的 html body结构下的div 盒子模型如下&#xff1a; <body><div class"container"><div c…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式&#xff0c;不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车&#xff0c; 这将显示电脑上的已安装应用&#xff08;Win32 & UWP&#xff09;&#xff1a; 找到想要创建…

【CSS】禁用元素鼠标事件(例如实现元素禁用效果)

文章目录 基本用法 基本用法 pointer-events 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件。实际运用中可以通过对auto 和none动态控制&#xff0c;来动态实现元素的禁用效果。 属性描述auto与pointer-events属性未指定时的表现效果相同&#xff0c;对…

上山取石&#xff0c;下江取锦。诗人秋浦啸傲&#xff0c;新津樵唱。江南山水秀美&#xff0c;水乡文化流长。而水&#xff0c;则是这些山水风景的灵魂所在。 水&#xff0c;雨露滋润万物生长的泉源。 它潺潺流淌于山间溪涧&#xff0c;涓涓细流化成了青山的眼泪。水顺势而下&a…

Python学习笔记第五十七天(Pandas 数据清洗)

Python学习笔记第五十七天 Pandas 数据清洗Pandas 清洗空值isnull() Pandas替换单元格mean()median()mode() Pandas 清洗格式错误数据Pandas 清洗错误数据Pandas 清洗重复数据duplicated()drop_duplicates() 后记 Pandas 数据清洗 数据清洗是对一些没有用的数据进行处理的过程…

迭代器模式-遍历聚合对象中的元素

在开发中&#xff0c;我们经常使用到Iterator这个接口&#xff0c;我们很疑惑于这个接口的作用&#xff0c;认为集合已经实现了数据访问的方法&#xff0c;增加Iterator的意义在哪。本文我们将学习迭代器模式&#xff0c;用以探讨Iterator的作用。 1.1 迭代器模式概述 提供一…

一生一芯4——使用星火应用商店在ubuntu下载QQ、微信、百度网盘

星火应用商店可以非常方便的完成一些应用的下载&#xff0c;下面是官方网址 http://spark-app.store/download 我使用的是intel处理器&#xff0c;无需下载依赖项&#xff0c;直接点击软件本体 我这里下载amd64,根据自己的处理器下载对应版本 sudo apt install ./spark-stor…

【es6】函数柯里化(Currying)

柯里化&#xff08;Currying&#xff09;&#xff1a;把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数&#xff0c;并且返回接受余下的参数且返回结果的新函数。 柯里化由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的&#xff0c;它是 Mos…