JavaScript 数据类型
- 默认模式
- 浅蓝色模式
- 淡绿色模式
- 深夜模式
什么是数据类型?
简单来说,数据类型定义了数据的种类以及可以对它进行哪些操作。例如,数字可以进行加减乘除,而文本则可以进行拼接或截取。JavaScript 是一种 “动态类型” 语言,这意味着你不需要提前声明变量的数据类型,类型会在代码运行时自动确定。
JavaScript 中的数据类型主要可以分为两大类:基本数据类型(原始类型)和引用数据类型(对象类型)。
- 基本数据类型:字符串 (String)、数字 (Number)、布尔 (Boolean)、空 (Null)、未定义 (Undefined)、Symbol。
- 引用数据类型:对象 (Object)、数组 (Array)、函数 (Function),还有两个特殊的对象:正则 (RegExp) 和日期 (Date)。
基本数据类型
在 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)
布尔类型只有两个值:true
和 false
。它通常用于表示逻辑上的真与假,是控制程序流程(如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(); // 获取当前年份
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈