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()一样
  • 相关阅读:
    再逛开心网
    WAPM
    win2003安装flash cs4
    [AS3][物体的运动]
    转sql产生百万记录
    KeyedList
    timer 焦点
    sql优化
    灰色
    参数
  • 原文地址:https://www.cnblogs.com/peilin-liang/p/12031790.html
Copyright © 2011-2022 走看看