JavaScript 的数据类型还真挺简单

180 阅读4分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战」。

初学JavaScript时,没有太过注意JavaScript的数据类型。而在学习C++、Java时,数据类型和数据结构是相当重要的,因为JavaScript 是一种弱类型或者说动态语言。在编码时,开发者无需提前声明变量的类型,在程序运行过程中,类型会被自动确定。JavaScript中的变量可以保存不同类型的数据。

最新的ES标准定义了8种数据类型,包括了7种原始类型(undefined、Boolean、Number、String、BigInt、Symbol、null)和Object对象。

原始值

Undefined

一个没有被赋值的变量会有一个默认值undefinedundefined全局对象的一个属性。也就是说,它是全局作用域的一个变量。undefined的最初值就是原始数据类型undefined。一个函数如果没有使用return语句指定返回值,就会返回一个undefined值。

Boolean

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

Number

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

数字类型中只有一个整数有两种表示方法: 0 可表示为 -0 和 +0("0" 是 +0 的简写)

String

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

在Java中,String一旦被赋值就无法修改,每次对String值的修改都是返回了新的String。在 JavaScript 中的字符串也是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串。

例如:String.substr()String.concat()

字符串可以表达任何数据结构,数组、对象等都可以通过方法转为字符串,也可以由字符串转回去,但是一般不建议这么做,在转换过程中,可能会出现错误。

BigInt

BigInt类型是 JavaScript 中的一个基础的数值类型,可以用任意精度表示整数。使用 BigInt,可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。BigInt 是通过在整数末尾附加 或调用构造函数来创建的。

示例:

> const x = 2n ** 53n;
9007199254740992n
> const y = x + 1n;
9007199254740993n

可以对BigInt使用运算符+、``*、``-、``**%,就像对数字一样。BigInt 严格来说并不等于一个数字。并且BigInt不能与数字互相转换,会抛出TypeError

Symbol

符号(Symbols)是ES6中新定义的。符号类型是唯一的并且是不可修改的, 并且也可以用来作为 Object 的 key 的值。类似于C语言中的枚举类型。

Null

null类型只有一个值:null。通常来说,表示一个不存在、对象、地址引用了。

Object对象

在JavaScript中,对象可以看作是一组属性的集合。是一个独立的实体,

要记的重点:

  1. JavaScript对象是一个独立的实体,它在属性和方法方面拥有多个值。
  2. 对象属性存储文字值,方法表示函数。
  3. 可以使用对象字面量或对象构造函数语法来创建对象。
  4. 对象字面量,示例:
     var person = { 
         firstName: "James", 
         lastName: "Bond", 
         age: 25, 
         getFullName: function () { 
             return this.firstName + ' ' + this.lastName 
             } 
     };
    
  5. 对象构造函数,示例:
    person = new Object();
                    
    person.firstName = "James";
    person["lastName"] = "Bond"; 
    person.age = 25;
    person.getFullName = function () {
        return this.firstName + ' ' + this.lastName;
    };
    
  6. 可以使用点符号或 [ ] 括号访问对象属性和方法。
  7. 对象通过引用从一个函数传递到另一个函数。
  8. 一个对象可以包含另一个对象作为属性。

常用的数据结构

JavaScript中的数据结构和其他语言一样,比如:数组、列表、栈、队列、链表、字典、树、图、集合等等。日常开发最常用的还是数组。