美文网首页
JavaScript 中的数据类型

JavaScript 中的数据类型

作者: 显卡84du | 来源:发表于2018-01-21 15:56 被阅读8次

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

    Number

    JavaScript 不区分整数和浮点数,统一用Number表示:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(2^63 -1) 到 2^63 -1)。

    123; // 整数123
    0.456; // 浮点数0.456
    1.2345e3; // 科学计数法表示1.2345x1000,等同于 1234.5
    -99; // 负数
    NaN; // NaN表示Not a Number,当无法计算结果时用 NaN 表示
    Infinity; // Infinity 表示无限大
    // 当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
    

    String

    字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。

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

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

    • 获取一个字符串的子串可通过选择个别字母或者使用 String.substr().
    • 两个字符串的连接使用连接操作符 (+) 或者 String.concat().

    Boolean

    布尔表示一个逻辑实体,可以有两个值:truefalse

    Null

    只有一个值 nullnull 表示一个“空”的值,它和 0 以及空字符串 '' 不同,0 是一个数值,'' 表示长度为 0 的字符串,而 null 表示“空”。

    在其他语言中,也有类似 JavaScript 的 null 的表示,例如 Java 也用 null,Swift 用 nil,Python 用 None 表示

    Undefined

    一个没有被赋值的变量会有(1)个默认值 undefined

    JavaScript 的设计者希望用 null 表示一个空的值,而 undefined 表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用 nullundefined 仅仅在判断函数参数是否传递的情况下有用。

    Symbols

    符号(Symbols)是 ECMAScript 第6版新定义的。符号类型是唯一的并且是不可修改的, 并且也可以用来作为 Object 的 key 的值。在某些语言当中也有类似的原子类型(Atoms)。你也可以认为为它们是 C 里面的枚举类型。

    ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。

    Object

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

    在 Javascript 里,对象可以被看作是一组属性的集合。用对象字面量语法来定义一个对象时,会自动初始化一组属性。(也就是说,你定义一个 var a = "Hello",那么 a 本身就会有 a.substring 这个方法,以及 a.length 这个属性,以及其它;如果你定义了一个对象,var a = {},那么 a 就会自动有 a.hasOwnPropertya.constructor 等属性和方法。)而后,这些属性还可以被增减。属性的值可以是任意类型,包括具有复杂数据结构的对象。属性使用键来标识,它的键值可以是一个字符串或者符号值(Symbol)。

    ECMAScript 定义的对象中有两种属性:数据属性访问器属性

    参考

    1、JavaScript 教程 - 数据类型和变量
    2、JavaScript 数据类型和数据结构

    相关文章

      网友评论

          本文标题:JavaScript 中的数据类型

          本文链接:https://www.haomeiwen.com/subject/nmbfaxtx.html