zoukankan      html  css  js  c++  java
  • js学习之——数据类型间的转换以及==和===的理解

    一、数据类型的转换

    js是一种松散型语言,js的数据类型由5种基本数据类型和1种引用类型组成,各种数据类型在一定程度上可以进行转换,下面贴上各个类型间强制转换的结果。

    1、其他数据类型向Number的转换

     1             Number(1) //1
     2             Number(NaN) //NaN
     3             Number(true) //1
     4             Number(false) //0
     5             Number(undefined) //NaN
     6             Number(null) //0
     7             Number({}) //NaN
     8             Number({a:1}) //NaN
     9             Number([]) //0
    10             Number([1,2,3]) //NaN
    11             Number("1") //1
    12             Number("1.1") //1.1
    13             Number("1a") //NaN
    14             Number("a1") //NaN
    15             Number("0xf") //15
    16             Number("031") //31
    17             Number("") //0

    2、其他数据类型向String的转换

     1         String(1) //1
     2             String(NaN) //NaN
     3             String(true) //true
     4             String(false) //false
     5             String(undefined) //undefined
     6             String(null) /null
     7             String({}) //[Object Object]
     8             String({a:1}) //[Object Object]
     9             String([]) //""
    10             String([1,2,3]) //1,2,3
    11             

    3、其他类型向Boolean的转换

     1        Boolean(1) //true
     2             Boolean(-1) //true
     3             Boolean(0) //false
     4             Boolean(NaN) //false
     5             Boolean("") //false
     6             Boolean("0") //true
     7             Boolean(undefined) //false
     8             Boolean(null) //false
     9             Boolean({}) //true
    10             Boolean({a:1}) //true
    11             Boolean([]) //true
    12             Boolean([1,2,3]) //truer

    二、==和等===的理解

    ==在比较两者是否相等时,会把两边的操作数转换成相同的数据类型然后再进行比较。那具体操作数是转换成什么数据类型呢,下面有一个规则:

    1、如果一个值是null,另一个是undefined,则相等。

    2、如果一个是数值,一个是字符串,则把字符串转成数值再进行比较。

    3、如果一个是true,则把true转为0,同理把false 转为0再进行比较。

    4、如果一个值是对象,另一个是数字或字符串,则将对象转换成原始值再进行比较(日期对象转换成字符串,其它对象先尝试调用valueOf()方法再尝试使用toString())

    5、其他不同类型的转换都不相等。

    6、NaN==NaN    false

    ===不仅要值相等,还需要类型相等才会相等。有两个特殊的情况,一是NaN===NaN为false,+0===-0为true。

    为了避免这两种情况,es6引进了Object.is()方法,使得Object.is(NaN,NaN)为true, Object.is(-0,+0)为false。

  • 相关阅读:
    hdu1865 1sting (递归+大数加法)
    hau1021 Fibonacci Again(递归)
    hdu2553 N皇后问题(dfs+回溯)
    BZOJ2342 [Shoi2011]双倍回文 【manacher】
    Manacher算法学习 【马拉车】
    BZOJ2743 [HEOI2012]采花 【离线 + 树状数组】
    BZOJ1296 [SCOI2009]粉刷匠 【dp】
    BZOJ1086 [SCOI2005]王室联邦 【dfs + 贪心】
    BZOJ1565 [NOI2009]植物大战僵尸 【最大权闭合子图 + tarjan缩点(或拓扑)】
    BZOJ2157 旅游 【树剖 或 LCT】
  • 原文地址:https://www.cnblogs.com/qiaoyun/p/10560273.html
Copyright © 2011-2022 走看看