CodeAshen's blog CodeAshen's blog
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)

CodeAshen

后端界的小学生
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)
  • CSS3浮动定位与背景样式

  • CSS动画

  • JS基础语法与表达式

    • 01-JS语法与变量
    • 02-JS基本数据类型
    • 03-表达式与操作符
    • 流程控制语句与数组

    • JS函数与DOM

    • 面向对象

    • 正则表达式

    • ES6基础入门

    • ES6语法扩展

    • Promise与Class

    • Module与Babel

    • 前端
    • JS基础语法与表达式
    CodeAshen
    2023-02-10
    目录

    03-表达式与操作符

    # 表达式和运算符

    image-20220719001340514

    # 算数表达式

    # 基本运算

    image-20220719001423504

    # 隐式类型转换

    如果参与数学运算的某操作数不是数字型,那么 JavaScript 会自动将此操作数转换为数字型

    3 * '4'   //12
    
    1

    字符串和 '+' 并用除外,此时 '+' 为连字符,表示字符串拼接。

    隐式转换的本质是内部调用Number0函数

    true + true   // 2
    false + 2     // 2
    3 * '2天'     // NaN
    
    1
    2
    3

    # 有关 IEEE754

    • 在JavaScript中,有些小数的数学运算不是很精准

      0.1 + 0.2   //0.30000000000000004
      
      1
    • JavaScript 使用了 IEEE754 二进制浮点数算术标准,这会使一些个别的小数运算产生“丢失精度”问题

      IEEE754二进制浮点数算术标准是计算机底层编译标准,了解即可!

    • 解决办法:在进行小数运算时,要调用数字的 toFixed() 方法保留指定的小数位数

      // toFixed() 方法表示保留几位小数,结果是字符串
      (0.1 + 0.2).toFixed(2)          // "0.30"
      
      // 使用 Number() 转为数字
      Number((0.1 + 0.2).toFixed(2))  // 0.3
      
      1
      2
      3
      4
      5

    # Math中的运算方法

    • JavaScript 中没有提供幂计算、开根号的运算符。需要使用 Math 对象的相关方法进行计算。

      image-20220719002630254

    • Math.ceil() 向上取整;Math.floor() 向下取整

    # 关系表达式

    image-20220719002905422

    两个等号 == 运算符不比较值的类型,它会进行隐式转换后比较值是否相等,三个等号===运算符,不仅比较值是否相同,也比较类型是否相同。

    NaN 不自等,NaN == NaN 和 NaN === NaN 结果都是 false。可以使用 isNaN() 函数判断值是否为 NaN。

    isNaN(NaN)  // true
    isNaN(5)    // false
    
    1
    2

    但 isNaN() 也不好用,它的机理是:只要该变量传入 Number() 的执行结果是 NaN,则 isNaN() 函数都会得到 true。

    isNaN(undefined)  // true
    isNaN('3天')      // true
    isNaN(null)       // false
    
    1
    2
    3

    # 逻辑表达式

    image-20220719003630212

    逻辑运算的优先级是:非→与→或

    # 赋值表达式

    • 可以连续赋值,a = b = c = 10
    • 快捷赋值,+= 之类的
    • ++a 和 a++ 的区别

    # 综合表达式

    运算顺序:非运算→数学运算→关系运算→逻辑运算

    image-20220719004249493

    编辑 (opens new window)
    上次更新: 2023/06/04, 12:34:19
    02-JS基本数据类型
    01-流程控制语句

    ← 02-JS基本数据类型 01-流程控制语句→

    最近更新
    01
    第01章-RabbitMQ导学
    02-10
    02
    第02章-入门RabbitMQ核心概念
    02-10
    03
    第03章-RabbitMQ高级特性
    02-10
    更多文章>
    Theme by Vdoing | Copyright © 2020-2023 CodeAshen | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式