JS(一): JavaScript中的数据类型

74 阅读2分钟

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)

  1. Number

    • 包含整数和浮点数。
    • 例如:42, 3.14
  2. String

    • 表示文本数据。
    • 例如:"Hello, World!", 'JavaScript'
  3. Boolean

    • 只有两个值:truefalse
    • 例如:true, false
  4. Undefined

    • 表示变量已声明但未赋值。
    • 例如:let x; console.log(x); // 输出: undefined
  5. Null

    • 表示空值,通常用于表示对象不存在。
    • 例如:let y = null;
  6. Symbol(ES6 引入)

    • 表示独一无二的值,主要用于对象属性的标识符。
    • 例如:let sym = Symbol('description');
  7. BigInt(ES11 引入)

    • 用于表示任意精度的大整数。
    • 例如:let bigInt = 123456789012345678901234567890n;

引用类型(Reference Types)

  1. Object

    • 是键值对的集合,可以包含任意数量的属性和方法。
    • 例如:let obj = { name: 'Alice', age: 30 };
  2. Array

    • 表示有序集合的列表。
    • 例如:let arr = [1, 2, 3, 4];
  3. Function

    • 表示可调用的代码块。
    • 例如:function greet() { console.log('Hello!'); }
  4. Date

    • 表示日期和时间。
    • 例如:let now = new Date();
  5. RegExp

    • 表示正则表达式。
    • 例如:let regex = /ab+c/;
  6. Map

    • 表示键值对的集合,其中键和值都可以是任意类型。
    • 例如:let map = new Map();
  7. Set

    • 表示值的集合,其中每个值只能出现一次。
    • 例如:let set = new Set([1, 2, 3]);
  8. WeakMap

    • Map 类似,但键必须是对象,且对键的引用是弱引用。
    • 例如:let weakMap = new WeakMap();
  9. 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 代码至关重要。