JavaScript中的数据类型包括以下几种
1.原始数据类型 (Primitive data types):
- 字符串 (String)
- 数字 (Number)
- 布尔值 (Boolean)
- 1.空 (null)
- 未定义 (undefined)
- Symbol (ES6新增)
2.复杂数据类型 (Complex data types):
- 对象 (Object)
- 数组 (Array)
- 函数 (Function)
- 正则表达式 (RegExp)
- 日期 (Date)
字符串类型(String)
字符串类型可以存储各种字符,一般使用双引号,单引号和反单引号。
var strOne = "Hello World"; //双引号
var strTwo = 'Hello World'; // 单引号
var strThree = `Hello World`; // 反单引号
// 其中使用反单引号的是被称为模板字符串,在字符串中嵌入${},可以在${}执行js代码。
var str = `我有${3+3}个苹果`;
console.log(str); // 返回 我有6个苹果
数字类型(Number)
数字类型用于存储整数和小数,极大或极小的数字可以通过科学(指数)计数法定义。
var numOne = 114514;
var numTwo = 114.514;
var numThree = 123e5; // 12300000
var numFour = 123e-5; // 0.00123
布尔值(Boolean)
布尔值主要是用于判断使用,通过true或false进行定义。
var ok = true;
var no = false;
当对数据进行判断的时候就是通过布尔值进行表示。
console.log(1 < 2); // 返回 true
console.log(1 > 2); // 返回 false
console.log(1 == 2); // 返回 false
console.log(1 === 2); // 返回 false
console.log(1 == '2'); // 返回 false
console.log(1 === '2'); // 返回 false
null和undefined
null是指这个值为空,undefined表示没有值,在意思上两个是差不多,但是从实际来操作,如果暂时不知道某个值或者不知道是什么数据类型,又或者想将某个值置空,就使用null。而undefined是在执行中出现的,多出现与未定义的数据类型或不存在的值。null不全等于undefined。
var dataOne = null;
var dataTwo = {}; // 定义一个空的对象
console.log(dataOne); // 返回 null
console.log(dataTwo.data); // 对象里面不存在data这个值返回 undefined
console.log(null === null); // 返回 true
console.log(undefined === undefined); // 返回 true
console.log(undefined === null); // 返回 false
唯一的标识符Symbol
Symbol(符号)是 ECMAScript 6 (ES6)引入的一种新的数据类型。Symbol是原始数据类型,表示唯一的标识符。Symbol具有唯一性(每个Symbol值都是独一无二的,不同的Symbol值永远不相等),不可变性(Symbol值一旦被创建,就不能被修改)。
Symbol可以用作对象的属性名,这样可以确保属性名的唯一性。相比于字符串作为属性名,Symbol作为属性名的主要好处在于避免了命名冲突的风险。
const s1 = Symbol();
const s2 = Symbol();
const obj = {
[s1]: 'value1',
[s2]: 'value2'
};
console.log(obj[s1]); // 输出 'value1'
console.log(obj[s2]); // 输出 'value2'
Symbol还可以接受一个可选的描述字符串作为参数,用于描述该Symbol的用途或含义。这个描述字符串不会影响Symbol的唯一性,仅用于调试目的。例如:
const s = Symbol('My Symbol');
console.log(s); // 输出 Symbol(My Symbol)
除了静态创建Symbol值,还可以使用Symbol.for()方法创建全局共享的Symbol值,这样可以在不同的地方获取到同一个Symbol值。例如:
const s1 = Symbol.for('sharedSymbol');
const s2 = Symbol.for('sharedSymbol');
console.log(s1 === s2); // 输出 true
Symbol也提供了一些内置的静态属性和方法,如Symbol.iterator、Symbol.toPrimitive等,可以用于实现特定的语言和运算符行为。需要注意的是,由于Symbol的唯一性和不可变性,它不能被隐式转换成字符串或数字类型,需要使用toString()或valueOf()等方法进行显式转换。Symbol作为一种新的数据类型,主要用于定义对象的唯一属性名,以及在特定场景下实现特定的语言功能。
对象 (Object)
对象由大括号({})包围,并且每个键值对之间使用逗号(,)分隔。
const obj = { key1: "1", key2: "2" };
// 取值
console.log(obj.key1); // 输出 1
console.log(obj["key2"]); // 输出 2
数组 (Array)
数组(Array)是一种用来存储多个值的有序集合。在JavaScript中,数组可以包含任意类型的数据,包括原始数据类型和其他对象。通过索引可以对数组进行取值,数组的索引是从0开始。
const array = [1, 2, "张三", "李四"];
// 取值
console.log(array[0]); // 输出 1
console.log(array[1]); // 输出 2
console.log(array[2]); // 输出 张三
console.log(array[3]); // 输出 李四
函数 (Function)
函数是一种特殊的对象类型,通过使用函数可以将一段js代码进行封装,可以重复进行调用以实现精简代码量。可以向函数传入值,方便进行值的处理。
function functionName(parameters) {
console.log(parameters);
}
functionName(12138);
正则表达式 (RegExp)
正则表达式是一种用于匹配和处理文本的强大工具。它可以用来查找、替换或提取字符串中符合特定模式的部分。
const pattern1 = /abc/; // 使用正则表达式字面量创建
const pattern2 = new RegExp('abc'); // 使用RegExp对象创建
日期 (Date)
JavaScript中的日期(Date)对象用于处理日期和时间。它允许你创建日期对象,获取和设置日期、时间以及执行各种与日期相关的操作。
要创建一个日期对象,可以使用 new Date()构造函数。如果没有传递任何参数,将会创建一个表示当前日期和时间的对象。
下面是一些关于JavaScript日期对象常用的方法和属性:
获取日期和时间:
• getFullYear():获取年份(四位数)
• getMonth():获取月份(0-11,0表示1月)
• getDate():获取月份中的某一天(1-31)
• getDay():获取星期几(0-6,0表示星期日)
• getHours():获取小时数(0-23)
• getMinutes():获取分钟数(0-59)
• getSeconds():获取秒数(0-59)
设置日期和时间:
• setFullYear(year):设置年份
• setMonth(month):设置月份
• setDate(day):设置月份中的某一天
• setHours(hour):设置小时数
• setMinutes(minute):设置分钟数
• setSeconds(second):设置秒数
获取时间戳:
• getTime():返回从1970年1月1日午夜以来的毫秒数(时间戳)
格式化输出:
• toLocaleString():返回日期和时间的本地化字符串表示
• toString():返回日期和时间的字符串表示
需要注意的是,JavaScript中的日期对象的月份从0开始计数,所以0代表一月,1代表二月,以此类推。
以下是一个简单的示例代码,展示了如何使用JavaScript的日期(Date)对象:
var now = new Date();
console.log(now.toLocaleString()); // 输出: 当前日期和时间的本地化字符串表示
console.log(now.getFullYear()); // 输出: 当前年份
console.log(now.getMonth()); // 输出: 当前月份
console.log(now.getDate()); // 输出: 当前日期
console.log(now.getHours()); // 输出: 当前小时数
console.log(now.getMinutes()); // 输出: 当前分钟数
console.log(now.getSeconds()); // 输出: 当前秒数
这些数据类型可以通过typeof操作符来检测。例如:
console.log(typeof "Hello World"); // 返回 "string"
console.log(typeof 42); // 返回 "number"
console.log(typeof true); // 返回 "boolean"
console.log(typeof null); // 返回 "object" (注意是bug,实际上应该返回 "null")
console.log(typeof undefined); // 返回 "undefined"
console.log(typeof Symbol()); // 返回 "symbol"
console.log(typeof {}); // 返回 "object"
console.log(typeof []); // 返回 "object"
console.log(typeof function(){}); // 返回 "function"
console.log(typeof /test/); // 返回 "object"
console.log(typeof new Date()); // 返回 "object"