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

    Number

    • Number数字类型包括常规数字和NaN
    • NaN (not a number) :不是一个数,但它率属于数字类型

        NaN和任何值(包括自己都不相等)NaN!=NaN ,所以我们不能用相等的方式判断是否为有效数字

    • isNaN:检测一个值是否为非有效数字,如果不是有效数字返回true,反之是有效数字返回false
    console.log(isNaN('123'))  //false
    console.log(isNaN('AA')) //true

    console.log(isNaN(10))   //false
    • 将其他值转化为数字类型

      1.Number(val)

       把字符串转换为数字,只要字符串中包含任意一个非有效数字字符(第一个点除外)结果都是NaN,空字符串会变为数字零

              null->0  undefined->NaN

        /把引用数据类型转换为数字,是先把他基于toString方法转换为字符串,然后在转换为数字

    console.log(Number('12.5')); //=>12.5
    console.log(Number('12.5px')); //=>NaN
    console.log(Number('12.5.5')); //=>NaN
    console.log(Number('')); //=>0 

     console.log(Number(true)); //=>1
     console.log(Number(false)); //=>0
     console.log(isNaN(false)); //=>false

     

    console.log(Number(null)); //=>0
    console.log(Number(undefined)); //=>NaN 

    
    

    // 把引用数据类型转换为数字,是先把他基于toString方法转换为字符串,然后在转换为数字
     console.log(Number({name:'10'}));//=>NaN
     console.log(Number({}));//=>NaN
    // {}/{xxx:'xxx'} .toString() => "[object Object]" => NaN
     console.log(Number([]));//=>0
    // [].toString() -> ''
     console.log(Number([12]));//=>12
    // [12].toString() -> '12'
     console.log(Number([12,23]));//=>NaN
    // [12,23].toString() -> '12,23' 

     let str = '12.5px';
    console.log(Number(str)); //=>NaN
    console.log(parseInt(str)); //=>12
    console.log(parseFloat(str)); //=>12.5
    console.log(parseFloat('12.5px')); //=>NaN 

      2.parseInt/parseFloat(val,进制)

       专门用于字符串转化成数值,对于字符串来说,它是从左到右依次查找有效数字字符,直到遇到非有效数字字符,停止查找(不管后面是否还有数字,都不再找了,把找到的当成数字返回。 

    console.log(parseInt('a123'))  //NaN
    console.log(parseInt('123a'))  //123

    String

    所有用单引号、双引号、反引号(撇 ES6模板字符串)包起来的都是字符串,字符串一旦创建就不可修改

    • val.toString()

      

    let a = 12;
    console.log(a.toString()); //=>'12'
    console.log((NaN).toString()); //=>'NaN'  
    // null和undefined是禁止直接toString的
    // (null).toString() //=>报错
    // 但是和undefined一样转换为字符串的结果就是 'null'/'undefined'
    // 普通对象.toString()的结果是 "[object Object]"  =>?  =>Object.prototype.toString方法不是转换为字符串的,而是用来检测数据类型的
    • 字符串拼接:四则运算法则中,除加法之外,其余都是数学计算,只有加法可能存在字符串拼接(一旦遇到字符串,则不是数学运算,而是字符串拼接)
    console.log('10' + 10); //=>'1010'
    console.log('10' - 10); //=>0
    console.log('10px' - 10); //=>NaN 
    let a = 10 + null + true + [] + undefined + '珠峰' + null + [] + 10 + false;
    /*
     * 10 + null -> 10 + 0 -> 10
     * 10 + true -> 10 + 1 -> 11
     * 11 + [] -> 11 + '' -> '11'  空数组变为数字,先要经历变为空字符串,遇到字符串,啥都别想了,直接变为字符串拼接 
     * '11' + undefined -> '11undefined'
     * ...
     * '11undefined珠峰null10false'
     */

    Boolean

    Boolean:只有两个值 true/false

    • 把其它类型值转换为布尔类型

      只有 0、NaN、''、null、undefined 五个值转换为FALSE,其余都转换为TRUE(而且没有任何的特殊情况)

      Boolean(val)

        

    console.log(Boolean(0));
    console.log(Boolean(''));
    console.log(Boolean(' '));
    console.log(Boolean(null));
    console.log(Boolean(undefined));
    console.log(Boolean([]));
    console.log(Boolean([12]));
    console.log(Boolean(-1)); 

         !/!! 

        !:取反(先转为布尔,然后取反)

        !!:取反再取反,只相当于转换为布尔 <=> Boolean

        

    /* console.log(!1); //=>FALSE
    console.log(!!1); //=>true */

      条件判断

         // 如果条件只是一个值,不是==/===/!=/>= 等这些比较,是要把这个值先转换为布尔类型,然后验证真假

        

    if (1) {
        console.log('哈哈');
    }
    if ('3px' + 3) {
        //=>'3px3'
        console.log('呵呵');
    }
    if ('3px' - 3) {
        //=>NaN-3=>NaN
        console.log('嘿嘿');
    }

     null / undefined

    null和undefined都代表的是没有

    null:意料之中(一般都是开始不知道值,我们手动先设置为null,后期再给予赋值操作)

    let num = null; //=>let num = 0;  一般最好用null作为初始的空值,因为零不是空值,他在栈内存中有自己的存储空间(占了位置)
    num = 12;

    undefined:意料之外(不是我能决定的)

    let num; //=>创建一个变量没有赋值,默认值是undefined
    num = 12;

     object类型

    每一object实例都具有以下属性和方法

    • constructor
    • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在;例如:o.hasOwnProperty("name")
    • isPrototypeOf(Object):用于检查传入的对象是否是传入对象的原型
    • toLocalString()
    • toString():返回对象的字符串表示
    let n ={name:'123',id:'123'};
    console.log(n.toLocaleString())//=>[object Object]
    console.log(n.toString()) //=>[object Object]
    • valueOf():返回值与toString()一样
  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/peilin-liang/p/12031790.html
Copyright © 2011-2022 走看看