美文网首页
js数据类型

js数据类型

作者: 土豪码农 | 来源:发表于2017-03-10 13:09 被阅读0次

    js中的数据类型有两种,一种是基本(简单)数据类型 ,
    还有一种是复杂(复合,引用)数据类型;

    简单数据类型

    • string 字符串
    • number 数值(整数|小数|NaN)
    • boolean 布尔类型的值 true + false
    • null 空(对象)
    • undefined 没有定义
    • symbol (标志吧)es6新增

    复杂(复合)数据类型

    • Oject 对象类型(js中所有的复杂数据类型都是基于objct)
    • Array 数组类型
    • Date 日期类型
    • Function 函数类型
    • RegExp 正则表达式
    • String 字符串对象(基本包装类型)
    • Number 数值对象
    • Boolean 布尔值对象

    如何判断数据类型 typeof

    • typeof 字符串(string) 数值 (number) true|false(boolean) undefined (undefined)
    • typeof null object(null是obejct是个意外,js采用2进制存储变量,第一版的js判断是否是object是根据前三位,null全都是0,自然被判断成对象)
    • typeof 复杂数据类型 都是object (除了函数function之外)
    • typeof本身是操作符不是函数
    • typeof返回值string类型
    • typeof undefined 和 typeof一个未定义的变量都是结果都是undefined是出于一种保护机制,防止阻塞代码
      *  undefined和is not defined,前者是声明不赋值,后者是不申明
        var a;
        console.log(typeof b); //undefined
        console.log(typeof a); //undefined
    
    • 判断对象,除了function,其他都是object那么如何区分呢,可以用instanceof

    instanceof

        console.log([] instanceof Array);  //true
        console.log(new String('2') instanceof String); //true
        console.log(new Number(2) instanceof Number);  //true
        console.log(new Boolean(true) instanceof Boolean);  //true
        console.log(function fn() {} instanceof Function);  //true
    
    • 记得一个小题目,之前面试官问我如何判断空数组[]和空对象{}
        //通过toString
        console.log([].toString()); //数组的toString等于join(',')会用逗号连接里面每个元素
        console.log(({}).toString());  //对象的toString则是显示对象类型[object Object]
        //通过借用Object上面的toString
        console.log(Object.prototype.toString.call([])); //[object Array]
        console.log(Object.prototype.toString.call({})); //[object Object]
        //查看length
        console.log([].length); //0
        console.log({}.length); //undefined
    
    • 通过上面的题目,我们可以发现还有一种办法判断对象类型
        console.log(Object.prototype.toString.call([]));  //[object Array]
        console.log(Object.prototype.toString.call({}));  //[object Object]
        console.log(Object.prototype.toString.call(function () {}));  //[object Function]
        console.log(Object.prototype.toString.call(new String('a')));  //[object String]
        console.log(Object.prototype.toString.call(new Number(1)));  //[object Number]
        console.log(Object.prototype.toString.call(new Boolean(true)));  //[object Boolean]
    
    

    相关文章

      网友评论

          本文标题:js数据类型

          本文链接:https://www.haomeiwen.com/subject/hcingttx.html