logologo
  • WebUI
  • JavaScript
  • TypeScript
  • C++
  • ··
    • C
    • Rust
    • Python
    • Cangjie
    • SQL
    • Design
    概述
    常见的数据结构
    ecmascript相关
    enumerable
    Object 内部实现
    sameValue 算法
    unicode
    语法设计
    声明
    表达式
    模块
    语句
    严格模式
    类型系统
    Array
    typedArray
    Map
    Number
    Object
    Set
    String
    结构化
    基本的组织元素
    动态性
    并发性
    范式
    函数式
    函数的行为
    闭包
    函数
    从运算式语言到函数式语言
    语言的多范式

    Last Updated: 11/30/2025, 3:14:53 PM

    Previous page严格模式Next pageArray

    #类型

    特点

    • “弱类型”。 在运行时进行数据实体的类型感知而无需声明,比如 typeof、Array.isArray、Object.prototype.toString等
    • “动态类型”。 在运行时可以对数据实体的结构进行改变,比如let num = 1; num = '1'

    优缺点分析

    • 优点:开发效率极快、心智负担极低
    • 缺点:不可靠,仅适合快速构建项目原型

    如何在“无类型声明”的语言中构建可靠系统? 防御式编程!

    层级工具/方法作用
    运行时安全typeof、Array.isArray、Object.prototype.toString基本类型检测
    模式守护Type Guard 函数、instanceof、Symbol.for('type')防止类型伪装
    静态预检TypeScript编译期拦截错误,提前发现逻辑漏洞

    示例:运行时类型守卫

    const type = {
      isNumber: (val) => typeof val === 'number',
      isString: (val) => typeof val === 'string',
      isArray: (val) => Array.isArray(val),
      isObject: (val) => val !== null && typeof val === 'object',
      isFunction: (val) => typeof val === 'function',
    };
    
    function input(data) {
        if (type.isNumber(data)) // TODO
        else if (type.isString(data)) // TODO
        else if (type.isArray(data)) // TODO
        else throw new Error('Unsupported type');
    }
    
    console.log(input(5));

    #数据类型

    #Simple

    有 7 种原始数据类型(又叫简单数据类型、基本数据类型、值类型)

    基本数据类型含义说明
    Undefined未定义未声明的变量或声明过但未赋值的变量,当然也可以赋值为 undefined
    Null空值表示空对象指针
    Boolean布尔true/false
    Number数值IEEE 754 双精度浮点数使用 64 位来表示:符号,指数,尾数
    String字符串可以访问指定位置的字符,但不能修改
    Symbol符号唯一值
    Bigint大整数任意精度整数

    #Complex

    除此以外都是复杂数据类型(Object 类型及其派生类型)。

    运算过程中自动进行类型的转换,内部称为抽象操作

    • ToPrimitive()转简单类型
    • ToObject()转复杂类型

    #类库

    Javascript 的类库已经默认挂载在了全局对象上了。

    该类库又称为:

    • JavaScript standard library ,js标准库
    • Standard Built-In Objects ,标准内置对象
    • Runtime library ,运行时库(相对编译时库而言)