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

    一、前言:

      JavaScript中变量似乎很简单,因为它声明变量只需要一个“var”就可以,不像其他编程语言严格区分了数据类型(int/double/char/boolean...)。这样做也是有好处的,变量可以被赋予任何类型的值,同样也可以给这个变量重新赋予不同类型的值。并不是“一定终身”。

      

      可是,JavaScript并没有避开数据类型,只是在声明时统一使用无类型(untyped)的“var”关键字而已,它的数据类型是根据所赋值的类型来确定的。

    var x = 1;        //number类型
    var x = 0.1;     //number类型,JS不区分整数值和浮点数值
    
    var x = "hello world"; //由双引号内文本构成字符串
    var x = 'javascript';   //单引号内文本同样可以构成字符串
    
    var x = true;    //true和false作为布尔值
    
    var x = null;
    var x = undefined;  //null和undefined很相似,是特殊的类型

     

    二、正文:

      下面对不同的数据类型进行说明

    数据类型分类 说明 详细分类

    原始类型
    • 原始值不可更改
    • 原始值的比较也是值的比较

    比如:var a = 1,  b = 1;

       a == b;   //true

    数字(number)
    字符串(string)
    布尔值(boolean)
    null
    undefined
    对象类型
    • 对象是可变的,即值是可以修改的
    • 对象的比较并非值得比较

    比如:var a = [], b = [];

         a == b;   //false,只有在引用相同时,两个只才会相等

    特殊对象--数组(array)
    特殊对象--函数(function)
    object类型

     

    1.“==”和“===”,即相等和全等

    类型 例子  
    相等(“==”) false == 0 使用相等(“==”)符号时,会自动转换符号两边的数据类型再进行比较,容易出错。
    全等(“===”) false === 0 使用全等符号时,不会自动转换数据类型,所有该符号也对数据类型进行了比较。

     

    false == 0        //true
    false === 0    //false

     

    2.null和undefined的区别

    undefined表示系统级的、出乎意料的或类似错误的值的空缺;表示缺少值,此处应该有值,但没有定义。例如:var a;  a就会显示undefined

    null表示程序级的、正常的或在意料之中的值的空缺; 一般多使用null。

    undefined
    null
    0
    -0
    NaN
    ""  //空字符串

    以上这些值在布尔值转换中,会转换成false。但是这并不足以让你认为他们与false是相等的:  

    undefined == true   //false
    undefined == false  //false
    
    undefined == null    //true
    undefined === null  //false
    
    null ==  false          //false
    null == true            //false
    
    "" == false              //true
    "" == true               //false
    
    0 == false               //true
    0 == true                //false
    -0 == false              //true
    -0 == true               //false
    
    NaN == false           //false
    NaN == true            //false
    NaN == NaN            //false NaN与任何值都不相等,包括它自身

    3.Infinity和NaN

    类型 相同点 例子 说明
    Infinity 都是Number类型 2/0 表示无限大,超过JS的number所能够表示的最大值。
    NaN 0/0 表示not a number,无法计算的结果。
    //NaN是一个特殊的number,与其他所有值都不相等,包括它自身
    NaN === NaN        //false
    
    //唯一识别NaN的方法
    isNaN(NaN)         //true

    4.JS的typeof的用法,可以把数据类型当作字符串返回

      1 2 3 4 5 6
    typeof的运算参数: 数字 字符串 布尔值 对象、数组和null 函数 运算数未定义
    例子: typeof(123) typeof("123") typeof(true) typeof([]) typeof(function(){}) typeof(arr)
    返回值: "number" "string" "boolean" "object" "function" "undefined"

     

    //typeof的括号可以不用,直接在后面跟需要测试的内容
    var a;
    typeof a;        //"undefined"
    
    var cc = {a:123};
    typeof cc;        //"object"
    
    typeof null;        //"object"

    说明:

    • 用途:可以使用typeof来判断一个变量是否存在,如:if(typeof a != "undefined")
      而不可使用:if(a),因为如果a不存在会报错(未声明),使用typeof则可以避免这个问题。
    • 局限:对于array、null和对象,typeof一律返回object。对此可以通过instanceof来区分。

    5.JS的instanceof,判断一个变量是否是某个对象的实例

    var a = new Array();
    a instanceof Array           //true
    a instanceof Object          //true
    
    // 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
    function Aoo(){}
    function Foo(){}
    Foo.prototype = new Aoo();//JavaScript 原型继承
    var foo = new Foo();
    console.log(foo instanceof Foo)//true
    console.log(foo instanceof Aoo)//true
    • instanceof 运算符判断一个对象是否是另一个对象的实例。返回true或false
    • instanceof 运算符用来检测 constructor.prototype 是否存在于参数 obj 的原型链上(或者说:检测obj的原型链上是否存在constructor.prototype )
  • 相关阅读:
    Python 准确获取今天是星期几的代码(isoweekday和weekday
    python对象之间的交互
    cpu的工作原理
    ubuntu禁止内核自动更新
    计算机组成原理
    python实例化对象过程
    python统计班级学生
    python私有变量和方法
    python变量 方法 属性
    制作再生龙启动盘
  • 原文地址:https://www.cnblogs.com/nangezi/p/9049025.html
Copyright © 2011-2022 走看看