zoukankan      html  css  js  c++  java
  • JavaScript学习笔记——数据类型强制转换和隐式转换

    javascript数据类型强制转换

    一、转换为数值类型
    Number(参数)任何的类型转换为数值类型

      A.如果是布尔值,false为0,true为1
      B.如果是数字,转换成为本身。将无意义的后导0去掉。
      C.如果Null转换为0
      D.如果是undefined 转换为NaN not a number
      E.如果对象则会先调用对象的 valueOf(),如果valueOf()返回的是NaN,然后再调用对象的 toString()
      F.如果是字符串
        1.如果字符串当中只有数字,转换为10进制(忽略前导0和后导0)
        2.如果是有效的规范的浮点型,转换为浮点值(忽略前导0和后导0)
        3.如果是空字符串,则转换为0
        4.如果是其他的值,返回NaN

    parseInt(参数1,参数2)字符串转换为整数
      A.如果一个字符串只包含数字,则以10进制的方式转换为整型。
      B.他会自动忽略字符串前面的空格,直到找到第一个非空的数值字符串,直到解析到第一个非数值的字符串结束。
      C.如果字符串的第一个字符不是空格、数字、-,那么返回NaN
      D.参数1
        八进制 十进制 十六进制
        0 后面的数字不能超过7 0x 0-9 a-f
       参数2
        控制解析模式 2-32

    parseFloat()字符串转换为浮点数
      A.字符串当中的.只有第一个有效,其他的都是无效的。
      B.如果字符串是一个有效的整数,他返回的是整数,不会返回浮点数。

    二、转换为字符串类型
    1. String(参数)
    可以将任何的类型转换为字符串
      null和undefined: 也都会转换为字符串,分别是 null和undefined
      布尔类型:会返回true或者false
      数值类型:本身的字符串

    2.toString()
    调用的格式 对象.toString()
    作用是将对象以字符串的方式来表示
      array.toString()   返回  由,分割的字符串
      Boolean.toString()   返回  值 true或者false
      String.toString()    返回  本身
      Number.toString(参数) 返回  本身的字符串形式
      控制输出模式 :2-32

    注意:null和undefined没有toString()方法

    三、转换为布尔类型
    Boolean() 可以将任何类型的值转换为布尔值
    转换为假: ""、 0、 NaN 、undefined、 false
    其他的全部都转换为真

    javascript数据类型隐式转换
    一、函数类
    isNaN()
      该函数会对参数进行隐式的Number()转换,如果转换不成功则返回true;
    alert()
      输出的内容隐式的转换为字符串

    二、运算符类

    1.算数运算符
    - * / %
    如果操作数不是数值,将会隐式的调用Number()函数,按照这个函数的转换规则进行转换,
    如果转换不成功,整个表达式返回NaN

    +
    如果操作数都是数值,然后进行相加
    任何数据类型字符串相加,都会隐私的调用他们的toString()方法,然后返回他们拼接的结果
    如果操作数都是布尔值,那么进行Number()转换,false为0,true为1,进行相加

    2.关系运算符
    关系运算符的操作数可以是任何类型,如果操作数不是数值类型,将会隐式的转换

    (1)他运算的结果都是布尔值
    (2)都是字符串的时候,他会先隐式转换成ASCII码然后进行比较他们的第一个字母
    (3)都是数值的时候,他会正常比较
    (4)当一个是字符串,另一个是数值的时候,把字符串尝试转换成Number()数值类型,然后进行比较,如果不能转换成数值类型,则会返回NaN,然后返回假
    (5) undefined == null
    (6)如果两个都是数值型字符串,那么他们隐式转换成ASCII码,也是只比较第一个
    (7)如果是一个数值布尔值进行比较,会把布尔值隐式转换为数值再进行比较,true为1, false为 0

    3.等性运算符 == !=
    对操作数隐式的转换后再比较值

    (1)如果其中至少有一个是布尔值,那么会隐式的调用Number()进行转换,然后比较。
    (2)如果一个为字符串。另一个为数值,那么会隐式的调用Number()对字符串进行转换,
    如果转换不成功,则返回false;
    (3) undefined == null
    (a) 比较字符串的时候是比较他们的ASCII码是否相等
    (b) 比较两个数值的时候是比较他们的数值是否相等
    (c) 比较函数的时候,判断他们的位置是否相等

    4.逻辑运算符
    A. 放在表达式里面用于判断。
    B. 给变量赋值
    var a= b && c
    如果一个运算数是对象,另一个是隐式的调用Boolean()函数,返回该对象
    如果两个运算数都是对象,返回第二个对象
    如果某个运算数是 null,返回 null
    如果某个运算数是 NaN,返回 NaN
    如果某个运算数是 undefined,发生错误

    var a=b ||c
    如果一个运算数是对象,并且该对象左边的运算数隐式的调用Boolean()函数,并且其值为 false,则返回该对象。
    如果两个运算数都是对象,返回第一个对象
    如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
    如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
    如果某个运算数是 undefined,发生错误。


    三、语句类

    if(表达式){

    }else{

    }

    格式: var 变量= Boolean expression?真值:假值

    while(){

    }
    if语句和三元表达式里面的表达式会隐式的调用Boolean()函数,按照这个函数的转换规则,转换 为相应的布尔 值

  • 相关阅读:
    每日英语:Universities in Singapore strengthen cooperation with China
    每日英语:The Exercise Equivalent of a Cheeseburger?
    每日英语:Eating Safely in China, on a Budget
    每日英语:What Makes A RiskTaker
    OAuth2 vs JWT,到底怎么选?
    Docker 为什么输给了Kubernetes?Docker 员工自述!
    90 岁程序员,他的压缩算法改变了世界!
    数据库设计的 10 个最佳实践!
    代码写的垃圾被嫌弃?这 3 个插件你值得拥有!
    ShardingJdbc 实现读写分离 + 分库分表,写得太好了!
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/4677176.html
Copyright © 2011-2022 走看看