JS(一): JavaScript中的数据类型
基本数据类型:Number, string , boolean, undefined, null
引用数据类型: object
Number中的NaN 表示计算错误:not a number
console.log('老师' - 2) // NaN
console.log(NaN + 2) // NaN
NaN是黏性,也就是任何对NaN的操作都会返回NaN
在 JavaScript 中,数据类型分为两类:原始类型(Primitive Types) 和 引用类型(Reference Types)。每种类型有不同的特性和用法。
原始类型(Primitive Types)
-
Number
- 包含整数和浮点数。
- 例如:
42,3.14
-
String
- 表示文本数据。
- 例如:
"Hello, World!",'JavaScript'
-
Boolean
- 只有两个值:
true和false。 - 例如:
true,false
- 只有两个值:
-
Undefined
- 表示变量已声明但未赋值。
- 例如:
let x; console.log(x); // 输出: undefined
-
Null
- 表示空值,通常用于表示对象不存在。
- 例如:
let y = null;
-
Symbol(ES6 引入)
- 表示独一无二的值,主要用于对象属性的标识符。
- 例如:
let sym = Symbol('description');
-
BigInt(ES11 引入)
- 用于表示任意精度的大整数。
- 例如:
let bigInt = 123456789012345678901234567890n;
引用类型(Reference Types)
-
Object
- 是键值对的集合,可以包含任意数量的属性和方法。
- 例如:
let obj = { name: 'Alice', age: 30 };
-
Array
- 表示有序集合的列表。
- 例如:
let arr = [1, 2, 3, 4];
-
Function
- 表示可调用的代码块。
- 例如:
function greet() { console.log('Hello!'); }
-
Date
- 表示日期和时间。
- 例如:
let now = new Date();
-
RegExp
- 表示正则表达式。
- 例如:
let regex = /ab+c/;
-
Map
- 表示键值对的集合,其中键和值都可以是任意类型。
- 例如:
let map = new Map();
-
Set
- 表示值的集合,其中每个值只能出现一次。
- 例如:
let set = new Set([1, 2, 3]);
-
WeakMap
- 与
Map类似,但键必须是对象,且对键的引用是弱引用。 - 例如:
let weakMap = new WeakMap();
- 与
-
WeakSet
- 与
Set类似,但值必须是对象,且对值的引用是弱引用。 - 例如:
let weakSet = new WeakSet();
- 与
类型转换
JavaScript 中的数据类型可以进行隐式和显式的转换。
隐式转换
JavaScript 在需要时会自动进行类型转换:
let a = 5 + '5'; // '55',数字 5 被转换为字符串
let b = '5' * 2; // 10,字符串 '5' 被转换为数字
显式转换
显式转换需要使用内置的转换函数:
let c = String(123); // '123'
let d = Number('123'); // 123
let e = Boolean(1); // true
类型检测
使用 typeof 运算符可以检测变量的类型:
console.log(typeof 123); // 'number'
console.log(typeof 'Hello'); // 'string'
console.log(typeof true); // 'boolean'
console.log(typeof undefined); // 'undefined'
console.log(typeof null); // 'object' (这是一个历史遗留问题)
console.log(typeof Symbol('id')); // 'symbol'
console.log(typeof 123n); // 'bigint'
console.log(typeof {}); // 'object'
console.log(typeof []); // 'object'
console.log(typeof function(){}); // 'function'
总结
JavaScript 提供了多种数据类型来处理不同类型的数据。理解这些数据类型以及它们的特性和用法,对于编写健壮和高效的 JavaScript 代码至关重要。