JavaScript 数据结构

来源:互联网 发布:手机阿里云登录 编辑:程序博客网 时间:2024/06/05 17:07

JavaScript是一种弱类型或者说动态语言。这一维修和不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。这也意味着可以用同一个变量保存不同类型的数据。

var foo=42;//foo is a Number nowvar foo="bar";//foo is a String nowvar foo=true;//foo is a Boolean now

数据类型

最新的 ECMAScript 标准定义了 7 种数据类型:

  • 6 种 原始类型:
    1. Boolean
      Null
      Undefined
      Number
      String
      Symbol (new in ECMAScript 6)

  • 和 Object
  • 原始值

    除 Object 以外的所有类型都是不可变的(值本身无法被改变)。例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”。

    布尔类型

    布尔表示一个逻辑实体,可以有两个值:true 和 false。

    Null 类型

    Null 类型只有一个值: null,更多详情可查看 null 和 Null 。

    Undefined 类型

    一个没有被赋值的变量会有个默认值 undefined,更多详情可查看 undefined 和 Undefined。

    数字类型

    根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(253 -1) 到 253 -1)。它并没有为整数给出一种特定的类型。除了能够表示浮点数外,还有一些带符号的值:+Infinity,-Infinity 和 NaN (非数值,Not-a-Number)。

    要检查值是否大于或小于 +/-Infinity,你可以使用常量 Number.MAX_VALUE 和 Number.MIN_VALUE。另外在 ECMAScript 6 中,你也可以通过 Number.isSafeInteger() 方法还有 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 来检查值是否在双精度浮点数的取值范围内。 超出这个范围,JavaScript 中的数字不再安全了,也就是只有 second mathematical interger 可以在 JavaScript 数字类型中正确表现。

    数字类型只有一个整数,它有两种表示方法: 0 可表示为 -0 和 +0(”0” 是 +0 的简写)。 在实践中,这也几乎没有影响。 例如 +0 === -0 为真。 但是,你可能要注意除以0的时候:

    > 42 / +0Infinity> 42 / -0-Infinity

    字符串类型

    JavaScript的字符串类型用于表示文本数据。它是一组16位的无符号整数值的“元素”。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1,依此类推。字符串的长度是它的元素的数量。

    不同于类 C 语言, JavaScript 字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。例如:

    获取一个字符串的子串可通过选择个别字母或者使用 String.substr().
    两个字符串的连接使用连接操作符 (+) 或者 String.concat().
    注意代码中的“字串符类型”!

    可以使用字串符来表达复杂的数据。以下是一些很好的性质:

    容易连接构造复杂的字串符
    字串符容易被调试(你看到的往往在字串符里)
    字串符通常是许多APIs的常见标准 (input fields, local storage values, XMLHttpRequest当使用responseText等的时候回应) 而且他只能与字符串一同使用。
    按照惯例, 字符串一般可以用来表达任何数据结构。这不是一个好主意。例如,使用一个分隔符,一个可以模仿一个列表(一个JavaScript的数组可能更适合一些) 。不幸的是,当一个分隔符在用于列表中的元素时,打乱了这个列表。 一个转义字符等。所有这些惯例都变成了一个不存在的维护负担而没有正确的工具使用。

    表达文本数据和符号数据时候推荐使用字符串。当表达复杂的数据时,使用字符串解析和适当的缩写。

    符号类型

    符号类型在ECMAScript 第6版中被引入Javascript. 符号类型是唯一的并且是不可修改的, 并且也可以用来作为Object的key的值(如下). 在某些语言当中也有类似的原子类型(Atoms). 你也可以认为为它们是C里面的枚举类型. 更多细节请看 Symbol 和 Symbol .

    对象

    在计算机科学中, 对象是指内存中的可以被 identifier引用的一块区域.

    属性

    在Javascript里,对象可以被看作是一个特性包。用对象字面量语法来定义一个变量或者对象,会自动初始化部分属性(也就是说,你定义一个var a = “Hello”,那么a本身就会有a.substring这个方法,以及a.length这个属性,以及其它;如果你定义了一个对象,var a = {},那么a就会自动有a.hasOwnProperty及a.constructor等属性和方法。)这些属性和方法都可以被更改,包括其它复杂对象。

    0 0