• 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。

  • 相关阅读:
    Effective C++ 读书笔记之Part1.Accustoming Yourself to C++
    Effective C++ 读书笔记之Part4.Design and Declarations
    Effective C++ 读书笔记之Part5.Implementations
    给程序猿三条身体保健的建议
    亮剑.NET的系列文章之.NET详解(开端)
    [转]英特尔工具使在多个处理器上实现线程化更加轻松
    [转]TrackBack Technical Specification
    Chapter 03 Writing Executable Statements 01
    Chapter 09Manipulating Data 01
    Chapter 00 Overview to PL/SQL
  • 原文地址:https://www.cnblogs.com/qiaoyun/p/10560273.html
Copyright © 2020-2023  润新知