【JavaScript基础】类型转换和运算符总结

183 阅读3分钟

类型转换

指将其他类型转换为string,number,boolean类型

转化为字符串

方法一:调用被转换类型的toString()方法

  • 格式:被转换类型.toString()
  • null和undefined两个类型不含有toString()方法,调用会报错!

方法二: 调用String()函数

  • 格式:xxx()
  • 通用,null --> 'null', undefined --> 'undefined'

转换为数字

方法一;调用Number()函数

  • 字符串
    • 如果字符串是一个合法数字,转化为数字
    • 否则转化为NaN
  • 布尔值
    • true --> 1
    • false --> 0
  • null
    • 直接转化为0
  • undefined
    • 直接转换为NaN

方法二:调用parseInt()和parseFloat()函数

  • 专门将字符串-->数字
  • parseInt()
    • 将字符串 解析为一个整数
    • 原理:依次从左向右读取一个个字符串中的字符,直到找到字符串中所有的合法整数为止,
    • 还可以用于对一个数字进行取整
  • parseFloat()
    • 将字符串解析为一个小数

转换为布尔值

方法一:使用Boolean()

  • 所有表示没有或者错误的都会转换为false
  • 数值
    • 0和NaN --> false
    • 其他 --> true
  • 字符串
    • 空串 --> false
    • 其他 --> true
  • null和undefined
    • false
  • 总结:所有false的情况
    • 0,NaN, '', false , null , undefined

运算符

算数运算符

常见二元运算符

  • +
  • -
  • *
  • /
  • **
  • %

拼串

  • 字符串+字符串 --> 拼接的字符串
    • 任意类型 + '' --> 转换为字符串(原理同String())
  • 其他类型的值进行算数运算
    • 转换为数值再进行运算
  • 隐式类型转换
    • 对任意类型 -0,*1 --> 转换为数字(原理同Number())
  • NaN+任意类型 --> NaN

一元运算符

  • +
  • -
  • typeof
  • 非数字类型进行正负运算
    • 先转换为数字,再运算
  • +任意类型 --> 转换为数值(原理同Number)

自增和自减

  • ++a
    • 返回变量自增后的值,新值
  • a++
    • 返回变量自增前的值,旧值
  • --a
    • 返回变量自减后的值,新值
  • a--
    • 返回变量自减前的值,旧值

赋值运算符

常见符号

  • =
  • +=
    • a += x 等价于 a = a + x
  • -=
  • *=
  • /=
  • **=
  • %=

哪些情况会为变量进行重新赋值

  • 对变量使用赋值运算符
  • 对变量使用自增自减

逻辑运算符

常见符号

  • ! 逻辑非
    • 对值进行取反操作
    • true变flase,false变true
    • 对非布尔值进行逻辑非运算 --> 先转化为布尔值 --> 再取非
  • && 逻辑与
    • 全为真才真
    • 找false的
    • 如果第一个值是false,不会去看第二个值
  • || 逻辑或
    • 全为假才假
    • 找true的
    • 如果第一个值是true,不会去看第二个值

对非布尔值的逻辑运算

  • && 与
    • 先转化为布尔值,再运算,最终返回原值
    • 第一个值为true,返回第二个值
    • 第一个值为false,直接返回第一个
  • || 或
    • 第一个值为true,直接返回第一个
    • 否则返回第二个

null调用toString()不报错的方法

    let a = null;
    a = a && a.toString();
    // console.log(a, typeof a);

利用与运算找false,第一个值a如果是null, 进行与运算,先转化为布尔值false, 直接返回结果【null 'object'】,不会报错

关系运算符

常见符号

  • >
  • >=
  • <
  • <=

对非数值类型,进行关系运算

  • 先转换为数字,再比较