主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

什么是数据类型?

简单来说,数据类型定义了数据的种类以及可以对它进行哪些操作。例如,数字可以进行加减乘除,而文本则可以进行拼接或截取。JavaScript 是一种 “动态类型” 语言,这意味着你不需要提前声明变量的数据类型,类型会在代码运行时自动确定。

JavaScript 中的数据类型主要可以分为两大类:基本数据类型(原始类型)和引用数据类型(对象类型)。

  • 基本数据类型:字符串 (String)、数字 (Number)、布尔 (Boolean)、空 (Null)、未定义 (Undefined)、Symbol。
  • 引用数据类型:对象 (Object)、数组 (Array)、函数 (Function),还有两个特殊的对象:正则 (RegExp) 和日期 (Date)。

JavaScript 的两种数据类型


基本数据类型

在 JavaScript 中,基本数据类型是指直接存储在栈(Stack)中的简单数据段,它们的值是不可变的,并且是按值访问的。

1. 数字类型(number)

数字类型用于表示整数和浮点数,例如:

let price = 99.99;       // 浮点数,使用小数点来写
let num = 60;            // 整数,不使用小数点来写

除了常规的数字,还包括一些特殊数值,例如:

let result = 10 / 0;     // Infinity,表示正无穷大
let result = -10 / 0;    // -Infinity,表示负无穷大
let result = "abc" / 10; // NaN,Not a Number,代表一个计算错误

需要注意的是,JavaScript 中的数字类型是基于 IEEE 754 标准的双精度浮点数,这可能会导致一些精度问题。例如:

let price = 0.1 + 0.2;   // 输出 0.30000000000000004 而不是 0.3

为了解决这个问题,可以使用一些技巧,比如将数字放大后再进行计算,或者使用专门的库来处理高精度的数字运算。

2. 字符串类型(string)

字符串类型用于表示文本数据。可以使用单引号(')、双引号(")或反引号(`)来定义字符串。

let website = "开创者教程"; // 使用双引号
let website = '开创者教程'; // 使用单引号
let website = `开创者教程`; // 使用反引号

除了之外,我们也可以设置为空值(空字符串)。

let website = ""; // 空字符串

字符串是不可变的,这意味着一旦创建了一个字符串,就不能直接修改它的内容。任何对字符串的修改都会创建一个新的字符串。

3. 布尔类型(boolean)

布尔类型只有两个值:truefalse。它通常用于表示逻辑上的真与假,是控制程序流程(如if条件判断和循环)的关键。

例如,一个问题 “用户是否登录?”,其状态就可以用布尔值 true(已登录)或 false(未登录)来表示。

let isLoggedIn = true;  // 用户已登录

4. 空类型(null)和未定义类型(undefined)

null 表示 “无值” 或 “空值”,通常用于表示一个变量已经被定义,但目前没有任何值。

let user = null; // 用户变量已定义,但目前没有值

undefined 则表示变量未被赋值,或者对象属性不存在。

let user; // 变量未赋值,默认为 undefined
let age = user.age; // 访问不存在的属性,结果为 undefined

5. 符号类型(symbol)

符号类型是 ES6 引入的一种新的基本数据类型。每个符号都是唯一且不可变的,通常用于对象属性的唯一标识符,避免属性名冲突。

let id1 = Symbol("id");
let id2 = Symbol("id");
console.log(id1 === id2); // false,即使描述相同,它们也是不同的Symbol

// 常用于对象的唯一属性
let user = {
    name: "John",
    [id1]: 123 // 不会被意外覆盖
};

引用数据类型

引用数据类型是指存储在堆(Heap)中的复杂数据结构。与基本数据类型不同,引用数据类型的值是按引用访问的,这意味着变量存储的是对象在内存中的地址,而不是对象本身。

1. 对象类型(object)

对象类型用于存储一组键值对(key-value pairs)。每个键(属性名)都是字符串,而值可以是任意类型的数据。

let website = {
    name: "开创者教程",
    url: "https://www.kaicz.com",
    established: 2015
};

对象属性有两种寻址方式:可以通过点(.)或方括号([])来访问对象的属性。

let name = website.name;
let url = website['url']

2. 数组类型(array)

数组类型用于存储一组有序的数据集合。数组中的每个元素可以是任意类型的数据,包括基本数据类型和引用数据类型。

let website = new Array();
website[0] = "www.kaicz.com";
website[1] = "www.google.com";
website[2] = "www.bing.com";

也可以直接在定义时,直接赋值。

var website = new Array("www.kaicz.com","www.google.com","www.bing.com");
// 或者
var website = ["www.kaicz.com","www.google.com","www.bing.com"];

数组的长度可以动态变化,可以通过length属性获取数组的长度。

3. 函数类型(function)

函数类型用于定义可执行的代码块。函数可以作为变量传递,也可以作为对象的属性。

function greet(name) {
    return "欢迎您使用, " + name + "!";
}

4. 正则表达式类型(RegExp)

正则表达式类型用于模式匹配和文本搜索。它们可以用来验证字符串格式、提取信息等。

let pattern = /kaicz/; // 创建一个正则表达式,匹配包含 "kaicz" 的字符串
let result = pattern.test("www.kaicz.com"); // 返回 true

5. 日期类型(Date)

日期类型用于处理日期和时间。可以创建 Date 对象来表示特定的日期和时间,并提供多种方法来操作和格式化日期。

let now = new Date(); // 创建一个表示当前日期和时间的 Date 对象
let year = now.getFullYear(); // 获取当前年份


评论区 0
发表评论
教程介绍
JavaScript 前端开发的核心技术之一,与 HTML 和 CSS 配合使用,能够为网页添加交互效果。
10 章节
58 阅读
0 评论