zoukankan      html  css  js  c++  java
  • JavaScript数据类型

    数据类型

    js中的数据类型分为基本数据类型和引用数据类型

    基本数据类型:number string boolean null undefined
    引用数据类型:
    对象object:Array Object RegExp Math Date String Number
    函数Function

    number数据类型

    包含整数和浮点数。

    将其他数据类型转为数字数据类型的方法?
    Number():
    强制将其他数据类型转为数字类型,当转化值中有一个不是数字的时候,就返回NaN,如果是数字的时候直接返回数字,Number()这个方法的返回值只有数字或NaN。
    NaN:not a number 非有效数字

    • Number({})
      对象数据类型转化为数字的时候,首先会转化为字符串,然后再转化为数字。
      第一步 先将括号中的{}转为字符串,调用.toString()方法
      第二步 {}.toString() 转为字符串 最终值为"[object Object]"
      Number("[object Object]") 最终值是NaN
    • Number([])
      第一步 [].toString() 转为字符串最终值为 "" (空字符串)
      第二步 Number("") 最终值是0
    • Number(null) 最终值是0
    • Number(undefined) 最终值是NaN
    • Number(true) 最终值是1
    • Number(false) 最终值是0
    console.log(Number(1+1));//2
    console.log(Number("1+1"));//NaN
    //console.log(Number([1,2]));
    //[1,2].toString() -- > "1,2"
    //Number("1,2") -- >NaN
    

    Number()中的值如果是

    1. 字符串的时候,只要字符中有一个值不是数字返回NaN
    2. 对象的时候,先将对象转为字符串(调用.toString()方法),然后将字符串转为数字
    3. 布尔的时候,true为1,false 0
    4. null的时候,为0
    5. undefined的时候,为NaN

    isNaN()
    检测一个值不是一个数字,返回值是布尔类型的值,要么是true要么是false,isNaN在验证之前,会先调用Number()方法,然后再去检查Number()方法的返回值。

    parseFloat()
    将字符串中的值从左向右查找,遇到非数字停止查找,将查找到的结果作为返回值,可以识别小数点

    parseInt()
    将字符串中的值从左向右查找,遇到非数字停止查找,将查找到的结果作为返回值,只能返回整数

    console.log(parseFloat("123.45bc"));//123.45
    console.log(parseInt("123.45bc"));//123
    console.log(parseInt([]));//NaN
    console.log(parseFloat(true));//NaN
    console.log(parseFloat(1.2));//1.2
    console.log(parseInt(1.2));//1
    console.log(parseInt(.2));//0
    console.log(parseFloat(.2));//0.2
    console.log(parseInt(".2"));// NaN
    console.log(parseInt(.2));// 0
    console.log(parseFloat(".2"));//0.2
    console.log(NaN == NaN);//false
    

    boolean数据类型

    布尔是逻辑运算 只有两个值 true 和 false
    如果判断一个值是真是假,遵循 0 "" NaN null undefined为假,其余都为真

    console.log(null == undefined);  //true
    console.log(!(NaN == NaN));//true
    console.log(!"0");//false
    console.log(!!"null");//true
    

    js中数据类型的比较

    对象转为布尔值的时候,全部为true

    '' 两个值比较是否相等
    '
    =' 绝对比较 只要两边数据类型不同 直接返回false

    val1 == val2 如果两个值不是同一个数据类型 就会进行默认数据类型转换

    对象 == 对象 永远不相等
    对象 == 字符串 将对象通过toString 转化为字符串,再进行比较
    对象 == 数字 将对象通过toString() 转化为字符串,然后在转化为数字
    数字 == 字符串 字符串转化为数字 再进行比较
    数字 == 布尔 将布尔转化为数字(true:1, false:0) 在进行比较
    字符串 == 布尔 都转化为数字在进行比较
    null和undefind 跟任何其他数据类型都不等

  • 相关阅读:
    poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
    poj 1251 poj 1258 hdu 1863 poj 1287 poj 2421 hdu 1233 最小生成树模板题
    poj 1631 最多能有多少条不交叉的线 最大非降子序列 (LIS)
    hdu 5256 最少修改多少个数 能使原数列严格递增 (LIS)
    hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
    Gym 100512F Funny Game (博弈+数论)
    UVa 12714 Two Points Revisited (水题,计算几何)
    UVa 12717 Fiasco (BFS模拟)
    UVa 12718 Dromicpalin Substrings (暴力)
    UVa 12716 && UVaLive 6657 GCD XOR (数论)
  • 原文地址:https://www.cnblogs.com/Juphy/p/6964409.html
Copyright © 2011-2022 走看看