JavaScript基础知识整理

65 阅读2分钟

1. JavaScript 基本数据类型和检测方式

JavaScript 有几种基本数据类型,包括 Number, String, Boolean, Null, Undefined, SymbolBigInt

  • 数据类型检测:
    • 使用 typeof 运算符可以检测大部分数据类型,但对于 null 和数组等会有特殊情况。
    • 使用 instanceof 可以检测对象的构造函数。
    • 使用 Array.isArray() 检测数组类型.

2. this 的理解

this 是 JavaScript 中的一个关键字,指向函数执行时的上下文。它的值取决于函数的调用方式。

  • 全局环境:
    • 在浏览器环境中,this 指向 window 对象。
    • 在 Node.js 环境中,this 指向 global 对象。
  • 函数调用:
    • 箭头函数中的 this 继承自外层作用域。
    • 普通函数中的 this 取决于调用方式(直接调用、作为方法调用、通过 callapplybind 调用).

3. let、const 和 var 的区别

ES6 引入了 letconst 来替代部分 var 的使用。

  • 作用域:
    • var 有函数作用域和全局作用域。
    • letconst 有块级作用域。
  • 重复声明:
    • var 可以重复声明同一个变量。
    • letconst 不允许在同一作用域内重复声明同一个变量。
  • 赋值:
    • const 声明的变量必须在声明时赋值,并且不能再次赋值.

4. 数组的原生方法

了解数组的原生方法可以帮助你更高效地操作数组。

  • 遍历方法:
    • forEach()
    • map()
    • filter()
    • reduce()
  • 操作方法:
    • push(), pop(), shift(), unshift()
    • splice(), slice()
    • concat().

5. for...in 和 for...of 的区别

这两个循环语句用于遍历对象和数组,但它们有不同的行为。

  • for...in:
    • 遍历对象的所有可枚举属性(包括继承的属性)。
  • for...of:
    • 遍历数组或类数组对象中的元素,或者是实现了迭代器协议的对象.

6. 事件循环(Event Loop)

理解 JavaScript 的单线程特性和事件循环机制,对于处理异步操作非常重要。

  • 单线程:
    • JavaScript 是单线程语言,但通过事件循环可以处理异步任务。
  • 事件循环:
    • 事件循环负责处理任务队列中的任务,包括宏任务(如 setTimeout)和微任务(如 Promise).
  • 事件循环优先级
    • 微任务(Promise) > 宏任务(setTimeout) > requestAnimationFrame

7. ES6+ 新特性

熟悉一些重要的 ES6+ 新特性,可以让你的代码更现代化和高效。

  • 箭头函数:
    • 简化函数定义,继承外层作用域的 this
  • 模板字符串:
    • 使用反引号(``)定义字符串,支持多行和内嵌表达式。
  • Promise 和 async/await:
    • 简化异步代码的写法,提高代码的可读性.