• JavaScript 数据类型


    数据类型   

          JavaScript基本数据类型包括五类,分别是Null、Undefined、Number、String、Boolean。还包括一种复杂的数据类型Object,Object是由一组无序的键值对组成。

    typeof 操作符

          typeof操作符用于检测给定变量的数据类型,对一个值使用typeof操作符,返回结果分为以下六种情况:

    1. "undefined" --- 该值未定义;   eg: typeof undefined、var a; typeof a、typeof b、 typeof Undefined、typeof Null(Undefined与Null和变量b一样,表示未定义的变量,并不是代表数据类型)

    2. "number" --- 该值是数字;      eg: typeof 11、typeof -1314、typeof 13.55

    3. "string" --- 该值是字符串;      eg: typeof "persistent"、typeof 'persistent'

    4. "boolean" --- 该值是布尔值;   eg: typeof true、typeof false 

    5. "Object" --- 该值是对象或null;eg: type of null、typeof {1:a}、typeof [1,2,3](数组也是对象)

    6. "function" --- 该值是函数;      eg: typeof Number、typeof String、typeof Boolean、typeof Object、typeof Array、typeof Function

    Undefined类型

           该类型仅有一个特殊的值,即undefined(它不是js的关键字,而是全局变量,即Global的一个属性。),它表示“缺少值”,此处应该有个值。典型用法:

    1. 用var关键字申明一个变量并未初始化,该变量的值为undefined。  eg: var i; console.log( i== undefined);

    2. 对象没有赋值的属性,该属性的值为undefined                          eg: var o = {}; console.log(o.p);        /* typeof o.p == null和typeof o.p == undefined都返回true,why???*/

    3. 调用函数时,该提供的参数并未提供,该参数值为undefined         eg: function f(x) {console.log(x);} f();  

    4. 函数没有返回值时, 默认返回undefined                                 eg: var x = f(); console.log(x);

           undefined是脚本引擎定义的一个常量,它在脚本引擎初始化完毕后存在。它的实际作用是用来表示一个已定义变量的未初始化状态(uninitialized),比如var i,i的值是undefined,因为i定义l了但未被初始化。如果从未在代码中出现过的变量被使用,这样的未定义就不是undefined所描述的未初始化,而是说明该变量完全未被登记到脚本引擎的上下文中。因此如下代码的输出结果为:

           var mess; console.log(mess == undefined);   //true  

           console.log(message == undefined);           //报错,提示ReferenceError: messages is not defined

           在实际使用中,使用typeof操作符来判断变量是否未定义,是完全可以兼容未定义(undefined)和未初始化(uninitialized)两种状态的,因此如下代码的输出结果为:

           console.log(typeof message)                    //undefined

           var mess; console.log(typeof mess)        //undefined

     

    Null类型

           该类型也仅有一个值,即null(它是js的关键字),表示对象不存在。典型用法:

    1. 作为函数的参数,表示该函数的参数不是对象

    2. 作为原型链的终点 (Object.getPrototypeOf(Object.prototype)   //null)

    3. 定义的变量将来用于保存对象,最好将变量初始化为null而非其它值。

           null本身是Null类型,但typeof null === "object"并非是因为null是Object,而是历史遗留问题。JS创始人也曾尝试性修复typeof null === "null",但在v8引擎中实现后导致大量问题,因此该提案被拒绝。

           null == undefined; //true  undefined派生自null,因此ECMA-262规定对它们的相等性测试返回true。

           null === undefined; //false 由于null是"object"类型,undefined是"undefined"类型,因此返回false。

     

    Boolean类型

           该类型只有两个值,即true和false。要将一个值值转化为对应的Boolean值,可以使用类型转换函数Boolean()。 

    Number类型

           表示整数和浮点数值,以及一种特殊的数值NaN(Not a Number)。

           NaN用于表示本该返回数值时未返回数值的情况。例如在其它编程语言中,任何数值除以0,会报错,代码停止运行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响代码的执行。

           NaN本身有两个特点:一,任何涉及NaN的操作,返回NaN(NaN/10,返回NaN);二,NaN与任何值都不相等,包括它自身(NaN == NaN //false) 

           isNaN()函数,接收一个参数,用于判断传入的值是否不是数值。参数为数值,返回true,参数不为数值,尝试将参数转化为数值,字符串"10"和Boolean类型的值能自动转化为数值。eg:isNaN(NaN) //true、isNaN("10") //false、isNaN("blue") //true、isNaN(true) //false、isNaN(25) //false 

           将非数值转化为数值有3个函数:parseInt()、parseFloat()和Number() 。

    parseInt():从第一个字符开始解析字符,直到解析完最后一个字符,除非遇到一个非数字字符。 它会忽略字符串前面的空格,直到遇到了第一个非空格字符,如果该字符不是数字或负号,则返回NaN。因此parseInt()转换空字符返回false。如果第一个字符为数字,继续解析下一字符,直到最后一个字符或是遇到非数字字符。另外如果第一字符为数字,parseInt能识别各种进制的数字。示例如下:

           console.log(parseInt("1234")); //1234         parseInt("   35   "); //35

           parseInt("1234blue"); //1234   parseInt("22.5"); //22 

           parseInt(""); //NaN

           parseInt(NaN); //NaN

           parseInt("0xA"); // 10   parseInt("070"); //未定,70或56   parseInt("70"); //70 

           parseInt("10",2); //2     parseInt("10",8); //8   parseInt("10",10); //10   parseInt("10",16); //16   parseInt("AF",16); //175

    parseFloat():从第一个字符开始解析,一直解析到最后一个字符或是遇到了无效的浮点数字符。字符串中第一小数点是有效的,第二个小数点是无效的。parseFloat()与parseInt()的区别在于,parseFloat会忽略前导的零值,parseFloat将值解析为十进制值,没有第二个参数指定基数的用法

            console.log(parseFloat("22.45")); //22.45 

            parseFloat("22.22.33"); //22.33

            parseFloat("022.3"); //22.3 

            parseFloat("1234blue"); //1234

            parseFloat("0xA"); //0 


    String 类型

           String类型用于表示由零个或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号""或单引号''表示。eg: var str = "hee";

           length属性表示字符串的长度。 eg:var str = "leee"; str.length; //4

           将一个值转化为字符串有2个函数:toString()和String()。

    toString():数值、布尔值、对象和字符串都有toString()方法,但null和defined值没有toString()方法。调用数值的toString()方法时,可以传递参数,表示输出数值的基数。eg:

           var num = 10;

           num.toString(); //"10"

           num.toString(2); //"1010"

           num.toString(8); //"12"

           num.toString(10); //"10" 

           num.toString(16); //"a"

           在不确定待转型的值是否为null或undefined的情况下,可以使用String()函数,该函数遵循如下转型规则:

    1. 如果值有toString()方法,调用该方法(不带参数),返回相应结果

    2. 如果值为null,返回"null"

    3. 如果值为undefined,返回"undefined" 

    Object类型

           Object类型实际上就是一组数据和功能的集合。对象可以通过构造函数的方式创建。也可通过创建Object的实例,并添加自己的属性和方法,就可以创建自定义对象。eg: var o = new Object();

           Object的每个实例都拥有下列的属性和方法:

    1. constructor -- 保存创建当前对象的函数

    2. hasOwnProperty(propertyName) -- 指定的属性是否是存在于当前对象的实例中,而不是存在于对象的原型中

    3. isPrototypeOf(object) -- 传入的对象是否是另一个对象的原型

    4. propertyIsEnumerable(propertyName) -- 检测指定的属性能否用for .. in语句枚举

    5. toString() -- 返回对象的字符串表示

    6. valueOf() -- 返回对象的字符串、数值、布尔值表示,通常与toString()的返回值相同

  • 相关阅读:
    【leetcode】腾讯精选练习 50 题(更新中)
    将博客搬至CSDN
    【笔记】linux基础(更新中)
    【寒窑赋】写在百篇博客之后
    【笔记】Vim
    【笔记】Git(更新中)
    【笔记】Java基础教程学习(更新中)
    【面试题】Java核心技术三十六讲(更新中)
    【leetcode】shell和sql题目思路汇总(更新中)
    【笔记】MySQL基础及高级特性(更新中)
  • 原文地址:https://www.cnblogs.com/sun-mile-rain/p/4018075.html
Copyright © 2020-2023  润新知