zoukankan      html  css  js  c++  java
  • JavaScript 数据类型(基本数据类型)

      JavaScript 数据类型分为简单数据类型和复杂数据类型。

      简单数据类别包括 Number、String、Boolean、Undefined 和 Null 共5种。 

      复杂数据类型只有一个 Object 类型。

    一、Number 类型

      Number 类型可以来表示整数和浮点数,也可以支持不同进制的数值。

      1、进制

        十进制:最基本的数值字面量格式是十进制整数。可以直接在代码中输入。

        八进制:八进制字面值的第一位必须是零( 0),然后是八进制数字序列( 07)。

            如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析。

        十六进制:十六进制字面值的前两位必须是 0x,后跟任何十六进制数字( 09 AF)。其中,字母 AF可以大写,也可以小写。

        Demo:

    var intNum = 55;          // 十进制的整数
    var octalNum1 = 070;      // 八进制的 56
    var octalNum2 = 079;      // 无效的八进制数值——解析为 79
    var octalNum3 = 08;       // 无效的八进制数值——解析为 8
    var hexNum1 = 0xA;        // 十六进制的 10
    var hexNum2 = 0x1f;       // 十六进制的 31
    

        注意在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。

      2、浮点数值

        所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

        由于保存浮点数值需要的内存空间是保存整数值的两倍,因此 ECMAScript 会不失时机地将浮点数值转换为整数值。

        对于那些极大或极小的数值,可以用 e 表示法(即科学计数法)表示的浮点数值表示。用 e 表示法表示的数值等于 e 前面的数值乘以 10 的指数次幂。 
        Demo:

    var floatNum = 3.125e7;   // 等于 31250000实际含义是 3.125乘以10的7次方

        ECMASctipt 会将那些小数点后面带有 6 个零以上的浮点数值转换为以 e 表示法表示的数值,  浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。
         Demo:

     var result = 0.1 + 0.2;    // 结果不是 0.3,而是:0.30000000000000004
    

         注意:永远不要判断两个浮点数是否相等。

      3、数值范围

        由于内存的限制, ECMAScript 并不能保存世界上所有的数值 。ECMAScript 将最值保存在下面的两个常量中:

    Number.MIN_VALUE;   // 最小值,这个值为5e-324
    Number.MAX_VALUE;   // 最大值,这个值为 1.7976931348623157e+308

            如果某次计算的结果得到了一个超出 JavaScript 数值范围的值,那么这个数值就代表无穷大。

    无穷大:Infinity
    无穷小:-Infinity
    

        无穷大的值无法参与计算,要想确定一个数值是不是有穷的(换句话说,是不是位于最小和最大的数值之间),可以使用 isFinite() 函数。这个函数在参数位于最小与最大数值之间时会返
    true。

        Demo:

    var result = Number.MAX_VALUE + Number.MAX_VALUE;
    alert(isFinite(result)); //false

      4、NaN

        NaN,即非数值( Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。

        特点

        •   任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN。
        •     NaN 与任何值都不相等,包括 NaN 本身 。(alert(NaN == NaN); //false

        在这里,ECMAScript 定义了 isNaN() 函数这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。 

        用法:

    isNaN(参数);     // 如果参数可以转化成数字,为 false;如果不可以转化为数字,为 true

    二、String 类型

       字符串可以由双引号( ")或单引号( ')表示, 推荐使用单引号表示。

      1、字符字面量

        字符串字面量其实就是字符串的值。

      2、转义字符

        String 数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他用途的字符 。

        例如:"我是一个”爱学习”的人",在一个字符串中使用双引号(“),这个时候就需要用到转义字符。

        常用的转义字符:

        

      3、字符串特点

        ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。

        要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。

        Demo:

    var lang = "Java";
    lang = lang + "Script";

         分析示例中的变量 lang 开始时包含字符串"Java"。而第二行代码把 lang 的值重新定义为"Java""Script"的组合,即"JavaScript"。实现这个操作的过程如下:首先创建一个能容纳 10 个字符的
    新字符串,然后在这个字符串中填充"Java""Script",最后一步是销毁原来的字符串"Java"和字符串"Script",因为这两个字符串已经没用了。

        这个过程是在后台发生的,而这也是在某些旧版本的浏览器(例如版本低于 1.0 FirefoxIE6 等)中拼接字符串时速度很慢的原因所在。

      4、扩展:

        (1)使用length属性用来获取字符串的长度

         Demo:

    var str = "JavaScript";
    console.log(str.length);

        (2)字符串拼接使用 + 连接

          Demo :

    console.log("hello" + "world");

           注意:+ 号两边只要有一个是字符串,那么+就是字符串拼接功能;两边如果都是数字,那么就是算术功能。

    三、Boolean 类型

      1、字面值:true 和 false,区分大小写

      2、计算机内部存储:true 为 1,false 为 0

    四、Undefined 类型

      undefined类型只有一个值,即特殊的 undefined。 表示一个声明了没有赋值的变量,变量只声明的时候值默认是undefined。所有 js 变量未赋于初始值的时候, 默认值都是 undefined.。

    五、 Null 类型

      Null 类型也是只有一个值的数据类型,即 Null。表示一个空对象指针,变量的值如果想为null,必须手动设置。

      使用 typeof 操作符检测 null 值时会返回"object" 。

      注意:undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true: 

    alert(null == undefined); //true

    六、typeof 操作符

      鉴于 ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof 就是负责提供这方面信息的操作符。

      用法:

    typeof 变量名;
    typeof (表达式)
    

        typeof 操作符的操作数可以是变量,也可以是数值字面量。

      注意typeof 是一个 操作符 而不是函数,因此上面中的圆括号尽管可以使用,但不是必需的。

  • 相关阅读:
    iOS 7 开发注意事项
    iPhone消息推送机制实现与探讨
    iPhone开发之全景展示(panoramagl)
    cocos2d-x安装和卸载
    使用Objective-C的+(void)initialize初始化static变量
    Objective C类方法load和initialize的区别
    使用Xcode和Instruments调试解决iOS内存泄露
    NSArray的三种排序方法
    Cocoa:NSOperation和NSOperationQueue
    NSNotification、delegate和KVO的区别
  • 原文地址:https://www.cnblogs.com/niujifei/p/11297605.html
Copyright © 2011-2022 走看看