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

    一、数据类型

    Null、Undefined、Boolean、Number、String、Array、Object

    还能叫得出名字的还有:NaN(Not a Number)、正则(RegExp)、日期(Date)、函数(Function)、arguments等等,其中NaN属于Number类型,正则、日期、函数、arguments属于Object,感觉js的数据类型有点乱。

    二、数据类型的分类:值类型、引用类型

    // 值类型

    console.log(typeof(x));    // undefined
    
    console.log(typeof(10));  // number
    console.log(typeof(NaN));  // number ==>不能通过typeof判断是否是数字,可以先判断是否是NaN(isNaN()函数用来确定一个值是否为NaN),再用typeof判断
    console.log(typeof('abc')); // string
    
    console.log(typeof(true));  // boolean
    
    console.log(typeof (null));  //object ==> 结果是object,但是属于值类型

    // 引用类型

    console.log(typeof(function () { }));  //function
    
    console.log(typeof([1, 'a', true]));  //object
    
    console.log(typeof ({ a: 10, b: 20 }));  //object
    
    console.log(typeof (new Number(10)));  //object

    typeof对js数据的判断结果共有6种:

    undefined, number, string, boolean, function, object

    1、分类:

    简单的值类型(不是对象):null、undefined、boolean、number、string。
    
    复杂的引用类型(是对象):函数、数组、对象、new Number(10)、new String('10')、new Boolean(true)、正则、日期等等。

    2、为什么说null不是对象呢?typeof null 的值不是object吗?

    a. 它老祖宗都不认他。

    console.log(null instanceof Object); // false

    b. 对象的定义是:若干属性的集合,而null不符合对象的定义,不是引用类型。

    var nullType = null;
    
    nullType.a = 123; // 报错 ==> Unexpected token .

    综上:null不是一个对象,不是复杂的引用类型。null最初是用来表示空对象的,但是不属于对象。typeof对null的判断是js的一个bug。

    三、如何判断一个变量的数据类型

    1、值类型的类型判断用typeof(返回值是字符串类型)

    // 值类型

    console.log(typeof(x));    // undefined
    
    console.log(typeof(10));  // number,结合isNaN函数
    
    console.log(typeof('abc')); // string
    
    console.log(typeof(true));  // boolean

    //虽然function也是一个引用类型对象,但是可以通过typeof判断:

    var fn = function() {};
    
    console.log(typeof fn); // function

    如何判断null类型?用 ===:

    console.log(null === null); // true

    不能用 == ,因为:

    console.log(null == undefined); // true
    
    console.log(null === undefined); // false

    2、引用类型的类型判断用instanceof

    //引用类型

    console.log(new String('string') instanceof String); // true
    
    console.log(new Number(10) instanceof Number); // true
    
    console.log(new Boolean(true) instanceof Boolean); // true
    
    console.log(new Array(3,4,5) instanceof Array); // true
    
    console.log([] instanceof Array); // true
    
    var fn = function() {}
    
    console.log(fn instanceof Function); // true
  • 相关阅读:
    Linux中touch和mkdir、vi的区别
    宿主机和虚拟机的IP地址和端口号的区别
    测试环境
    Fiddler
    Linux 常用指令
    测试环境的网址与账号密码
    书签
    快速寻找满足条件的两个数
    android 资讯阅读器(二)
    android 资讯阅读器
  • 原文地址:https://www.cnblogs.com/yanmuxiao/p/8570038.html
Copyright © 2011-2022 走看看