😀
主要记录关于JavaScript学习过程中的基础知识,用于复习和总结,主要内容借助GPT生成。

📝 涉及内容

  • 变量、常量
  • 数据类型
  • 流程控制
  • 函数
  • 对象定义、属性、方法、构造函数
  • 类、继承
  • 原型链
  • 高阶函数
  • 作用域与闭包
  • 错误处理
  • 类型转换
  • 事件循环和异步编程

🆎 数据类型

原始类型

  • number:数值类型,例如整数、浮点数
  • string:字符串
  • boolean:布尔值(true 或 false)
  • null:空值
  • undefined:未定义
  • Symbol:独特的标识符(ES6 引入)
  • BigInt:大整数

引用类型

  • Object:对象
  • Array:数组
  • Function:函数
  • Date:日期

变量声明

三种不同的声明变量方式:
  • var:有函数作用域和可提升性(hoisting)
  • let:有块作用域
  • const:定义常量,有块作用域,且不可重新赋值

流程控制语句

  • 条件语句: if-else、switch
  • 循环语句: for、while、do-while、for-in、for-of

函数

JavaScript 中的函数有多种定义方式:普通函数、匿名函数、箭头函数,以及具名或匿名的回调函数。

对象相关

定义与使用

  • 对象是属性和方法的集合,可以通过对象字面量、构造函数或 Object.create 创建。

构造函数

  • 构造函数用于创建和初始化对象。
  • 通过 new 关键字实例化时,构造函数的 this 指向新对象。

属性与方法

  • 对象的属性可以是数据属性或访问器属性。
  • 方法通常是函数,绑定到对象的属性中。

类与继承

  • 在 ES6 中引入了 class 语法,使得面向对象编程更加清晰易懂。
  • class 支持继承、静态方法、以及构造器等。

原型链

  • JavaScript 使用原型继承机制。
  • 对象的原型链是一系列对象的链表,使对象能继承并操作其原型链上的属性和方法。

注意事项

  • 使用构造函数时,确保使用 new 关键字来创建实例,否则 this 指向全局对象。
  • 类的静态方法不能通过实例调用,而是通过类本身调用。
  • 原型链中属性查找是从下往上查找,找到就停止搜索,找不到则返回 undefined。
  • 不要直接修改内置对象的原型,这样做可能破坏全局环境。

作用域与闭包

  • 作用域:
    • JavaScript 中有全局作用域、函数作用域和块作用域。
    • 块作用域由 let 和 const 引入,使得在块(如循环或条件语句)中的变量仅在块内可见。
  • 闭包:
    • 闭包是函数与其词法环境的组合,使函数可以访问函数外部的变量,即使该函数在外部执行。
    • 闭包常用于数据隐藏和工厂函数。

事件循环和异步编程

  • 事件循环:
    • 解释 JavaScript 如何异步处理事件和执行任务。
    • 它使代码在执行时保持非阻塞状态。
  • 异步编程:
    • 通过回调、Promise 和 async/await 处理异步操作,如定时器和网络请求。

错误处理

  • JavaScript 使用 try-catch 捕获并处理异常。自定义错误类可用于生成特定的错误信息。

类型转换

  • 显式转换:使用 Number、String、Boolean 等转换方法。
  • 隐式转换:通过自动类型转换操作符。

严格模式

  • 使代码执行更严格的检查,以避免潜在的错误。
  • 启动方式:use strict;

高阶函数

  • 高阶函数是可以接受函数作为参数,或返回另一个函数的函数。
  • 常用的数组高阶函数包括 map、filter 和 reduce。
JavaScript——模块化NAT分类对比学习