• JS类型转换


    JS类型转换

    这个坑有点深......

    js的类型转换有两种  :  

    一. 显式类型转换 (大摇大摆转换) : 

    其中的方法有 :

    转化为数字

    Number(n) :

    Number(n) 
    // 结果能是数字的情况:
    // n是 纯数字, 纯数字字符串, null, 空数组, 一位数组并且是数字或者纯数字字符串, 布尔值
    Number(123) 返回123
    Number("123") 返回123
    Number([]) 返回0
    Number([123]) 返回123
    Number(['123']) 返回123
    Number(null) 返回0
    Number(true) 返回1
    Number(false) 返回0
    // 其他情况会返回NaN

    parseInt(n, index)

         两个参数, n是要转换的值, index是基底, 即进制

         规则和Number大致一样

         但是如果是字符串且以数字开头, 比如 '123abc'

         截取前面数字并返回 123

    parseFloat(n) :

         规则和parseInt几乎完全一样, 但是没有进制参数

      只是如果碰到小数点, 比如 '123.123.123abc'

         她会解析一位小数点 返回 123.123

    转化为字符串 : 

    toString() :

    value.toString()
    // 如果value是 :
    //   数字, 返回数字字符串
    //   布尔值, 返回布尔值字符串
    //   字符串不用说
    //   对象, 返回[object Object]
    //   数组, 返回数组的字符串形式
    //   函数, 把完整的函数表达式返回

    String(n) :

    参数传递不一样, 其他和toString()一样

    转化为布尔值 : 

    Boolean() : 

    转化为false的情况: 空字符串, 数字0, false, undefined, null

    其余情况均转化为true

    二 .  隐式类型转换 (偷偷摸摸转换, 但还是调用的显式类型转换的方法) : 

    isNaN()

    调用Number()方法, 然后和NaN比对, 如果是NaN返回true, 否则返回false

    ++    --    +    -    

    调用Number()方法, 然后进行数字操作

    +

    调用String()方法, 然后进行字符串连接操作

    -    /    *    %

    调用Number方法, 然后进行数字操作

    &&    ||    !

    调用Boolean() 方法

    <    >    <=    >=

    字符串和数字比较, 字符串通过Number()方法优先转化为数字

    ==    !=

    双等号比较和转换规则如下(按照步骤进行):  !   !   !   !  比较重要

    1. 前后只要有NaN, 一律返回false
    2. 前后如果有布尔就将布尔转化为数字
    3. 如果有字符串
      对方是对象: 对象使用toString()
      对方是数字, 字符串转数字
      对方是字符串, 直接比较
      其他返回false
    4. 如果是数字, 对方是对象, 对象取valueOf进行比较, 其他一律返回false
    5. null 和 undefined 不进行类型转换, 但他们俩相等

    隐式类型转换几乎就是为笔试面试准备的, 工作中最好少用

  • 相关阅读:
    vim使用
    .net程序员转java之mybatis学习
    Redis 学习笔记
    Effective C# 笔记01
    Android 开发感想
    入职两个月,WPF开发感想
    Oracle 学习笔记二
    Oracle 开发使用笔记一
    Java 集合——Map集合
    Java 集合——Set集合
  • 原文地址:https://www.cnblogs.com/jedenzhan/p/9465637.html
Copyright © 2020-2023  润新知