• JavaScript中的数据类型转换


    一、概述

    1、JavaScript的数据类型:

    JavaScript中设计了5种简单数据类型Number、String、Boolean、Undefined、Null。和复杂数据类型Object

    ES6新增的Symbol数据类型,Symbol在开发中很少遇到,一般在写类库、或保证对象键不重复,这里不做讨论

    2、JavaScript中的特殊类型值:

    特殊类型的值有:

    0、NaN、空字符串""、false、undefined、null

    这6个值在 Boolean转型函数中,结果均为false。由于程序控制语句 if 自动使用Boolean函数转换为布尔值,因此这6个值非常重要。

    • 对于Number类型,特殊的值有 0、NaN;(Infinity转换结果与一般Number类型值转换结果一致)
    • 对于String类型,特殊的值为空字符串 "",
    • 对于Boolean类型 ,只有true、false两种,false为特殊值;
    • 对于Undefined类型,只有一种类型,特殊值为undefined;
    • 对于Null类型,只有一种类型,特殊值为null。

    二、转型函数

    一般使用的转型函数:Number()、String()、Boolean():

    1、Number():

    对于Number函数,用于将其他类型的值转换成Number类型,但转换字符串结果不够合理,大多数情况下,使用parseInt、parseFloat函数替代;

    转换规则:

    • 如果是布尔值:true、false将会被转换成1、0;
    • 如果是数字值:只是简单的传入和返回;
    • 如果是null值:返回0;
    • 如果是undefined:返回NaN;
    • 如果是字符串:只能识别有效的字符串类型,比如:整数型字符串(忽略前导0)、浮点型字符串(忽略前导0)、16进制格式、空字符串、其他类型均返回NaN;

    2、String():

    对于String函数,用于将其他类型的值转换成String类型,转换规则如下:

    • 如果值有toString方法,则调用该没有参数的toString方法;
    • 如果是null,返回"null";
    • 如果是undefined,返回"undefined";

    3、Boolean():

    对于Boolean()函数,使用if语句时会自动调用Boolean函数将其转换为布尔值。对于转换结果,只要记住了上述6中特殊值转换结果均为false,其他均为true。

    4、验证:

    let specialData = [0, NaN, null, undefined, '', false];
    let funArray = [Boolean, String, Number];
    
    funArray.forEach(fun => {
      var tem = {};
      specialData.forEach(data => {
        tem[`${fun.name}( ${data} )`] = fun(data);
      });
      console.table(tem);
    })
    Boolean( 0 )   //false
    Boolean( NaN )  //false
    Boolean( null )  //false
    Boolean( undefined )  //false
    Boolean(  )  //false
    Boolean( false )  //false
    String( 0 )  //0
    String( NaN )  //NaN
    String( null )  //null
    String( undefined )  //undefined
    String(  )  //<empty string>
    String( false )  //false
    Number( 0 )  //0
    Number( NaN )  //NaN
    Number( null )  //0
    Number( undefined )  //NaN
    Number(  )  //0
    Number( false )  //0

    三、布尔操作

    1、逻辑非:

    逻辑非是一个操作符,使用!表示,用于将一个操作数转换为布尔值,由于使用双重逻辑非 与 Boolean函数的转换结果一致,因此,只要记住了以上6种特殊值,很容易得到转换结果。

    let specialData = [0, NaN, null, undefined, '', false];
    let tem = {};
    
    specialData.forEach(data => {
      tem[`!!${data}`] = !!(data);
    });
    console.table(tem)
    !!0  //false
    !!NaN  //false
    !!null  //false
    !!undefined  //false
    !!   //false
    !!false  //false

    2、逻辑与(&&):

    逻辑与经常用于判断对象属性是否存在,有助于提高程序健壮性。它遵守以下规则:

    • 如果第一个操作数是对象,返回第二个操作数;
    • 如果第二个操作数为对象,只有在第一个操作数求值结果为true的时候返回该对象;
    • 如果两个操作数均为对象,返回第二个操作数;
    • 如果有一个操作数为null、NaN、undefined,返回对应的null、NaN、undefined;

    总结:

    逻辑与在对第一个操作数求值结果为true 的时候,返回第二个操作数;当第一个操作数求值结果为false的时候,返回第一个操作数。

    3、逻辑或(||):

    逻辑或经常应用在当个结果为false的时候,提供一个默认值。转换规则如下:

    • 如果第一个操作数为对象,返回第一个操作数;
    • 如果第一个操作数结果为false,返回第二个操作数;
    • 如果两个操作数均为对象,返回第一个操作数;
    • 如果两个操作数均为null、NaN、undefined,返回对应的值;

    总结:

    与逻辑与相反,逻辑或在第一个操作数求值结果为true的时候,返回第一个操作数;当第一个操作数求值结果为false的时候,返回第二个操作数。

     
  • 相关阅读:
    124. 二叉树中的最大路径和
    快速排序,归并排序
    剑指offer ——重建二叉树
    共享指针的简单实现
    string_自定义
    幸运的袋子
    动态规划——出差问题
    计算数组平均值
    时间格式化并算差值
    适配器模式
  • 原文地址:https://www.cnblogs.com/engeng/p/15103540.html
Copyright © 2020-2023  润新知