• 浅谈 JavaScript 中常用数据及其类型转换


    在 JavaScript 中有一些 value 会经常碰到:

    [] (空数组)、{} (空对象)、'' (空字符串)、undefined、null、0、NaN、Infinite

    也会经常碰到数据类型转换:

    ==、+、-、>、<、

    if(...) 真假判断、window[...] 属性

    这几种情况下,就需要考虑数据类型转换。

    碰到最多的是 true 和 false 判断:

    if( [] ) console.log('true') /* 输出 true */

    if( {} ) console.log('true') /* 输出 true */

    对于空字符串、undefined、null、0 都是输出 false。

    if( NaN ) console.log('true') /* 输出 false */

    if( Number.POSITIVE_INFINITY ) console.log('true') /* 输出 true */

    if( Number.NEGATIVE_INFINITY ) console.log('true') /* 输出 true */

    还有根据 ==、+、-、>、< 等进行 true 和 false 判断

    1、if( NaN != NaN ) console.log('true') /* 输出 true */

    可以这么说: NaN 与任何值都是不相等的。还有更加极端的情况:

    var d = NaN; if ( d === d ) console.log('true'); else console.log('false'); /* 输出 false */

    自身不等于自身的还有 {} 和 [],空对象和空数组,与自身不是绝对相对相等容易理解(对象和数组都是引用类型),但:

    var d = {}; if ( d === d ) console.log('true'); else console.log('false'); /* 输出 true,对于 [] 是一样的 */

    {} == {},[] == [] /* 均输出 false */  显然 == 并不总是进行类型转换(只在两边的数据类型不相同的时候进行类型转换)。

    2、undefined Infinity null 不存在 NaN (自身不等于自身) 的问题

    3、undefined 与 null 相比较

    undefined == null /* 输出 true */

    4、以上各种数据类型与字符串进行比较

    if( {} == "[object Object]" ) console.log('true') /* 输出 true */

    if( [] == "" ) console.log('true') /* 输出 true */

    var dxdxdx; if( dxdxdx == undefined ) console.log('true') /* 输出 true */

    var dxdxdx; if( dxdxdx == "undefined" ) console.log('true'); else console.log('false'); /* 输出 false */

    从以上语句可以看出,对于 undefined,未能自动使用类型转换(还有 null 和 NaN 都不能自动转换为字符串)。

    var dxdxdx; if( dxdxdx+'' == "undefined" ) console.log('true'); else console.log('false'); /* 输出 true */

    对于 null 来说:

    var dxdxdx = null; if( dxdxdx == null ) console.log('true') /* 输出 true */

    var dxdxdx = null; if( dxdxdx == "null" ) console.log('true'); else console.log('false'); /* 输出 false */

    对于 undefined 和 null 来说,都可以用 dxdxdx == null 或者 dxdxdx == undefined 来判断。

    5、以上各种数据类型转换为数字

    也只有 字符串 类型对变量有转换为数字对需求,对于数组和对象转换成为数字,一般需要自行写接口进行转换。

    6、toString 和 String

    toString 用来检测变量对数据类型。

    toString.call( [] ) /* "[object Array]" */

    String 用来把变量转换为字符串。

    String.call( [] ) /* "" */

    7、类型转换还有 parseInt parseFloat

  • 相关阅读:
    张量自动求导和计算图
    34 深入浅出 x86 中断机制(下)
    33 深入浅出 x86 中断机制(上)
    使用STM32 PWM控制LCD背光
    32 获取物理内存容量 下
    ucGUI内存管理相关
    STM32 SPI双机通信参考
    IAR_UCOSII_UCOSIII
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/ndos/p/9134835.html
Copyright © 2020-2023  润新知