变量和数据类型
我们知道,在 JS 中变量必须先声明再使用,变量声明的关键字有 var、let、const。var 存在变量提升的问题,而 let 和 const 没有这个问题,在块级作用域内声明的变量只在本作用域内有效。
在 JS 中有七种数据类型:Number、String、Boolean、Object、Null、Undefined 和 Symbol。其中,Object 又被细分为 Function、Array 和 Map 等。需要注意的是,JS 中的变量是松散类型(或动态类型),即一个变量既可以保存数值,也可以保存字符串等。
原型和原型链
JS 中所有的对象都是由 Object 构造函数创建的。每个对象都有一个 prototype 属性,指向其原型对象。当我们访问一个对象的属性或方法时,在该对象上没有找到时,会沿着原型链向上查找。
JS 中的原型链是由原型对象相互关联形成的链式结构,最终指向 Object.prototype。在原型链上,对象可以访问其原型对象的属性和方法。
闭包
闭包是指函数及其相关变量的包裹体。在 JS 中,由于函数可以嵌套定义,所以内部函数可以访问到外部函数的变量,这种特性就称为“闭包”。闭包可以用来实现模块化和私有成员等设计模式。
面向对象编程
在 JS 中,面向对象编程主要是通过构造函数和原型来实现的。构造函数用来创建对象,并初始化对象的属性和方法;原型则用来共享对象的属性和方法。
在 ES6 中引入了 class 关键字,可以更方便地定义类和继承关系。
异步编程
JS 中常用的异步编程技术有回调函数、Promise 和 async/await。回调函数是最早的异步编程技术,但是嵌套过多容易造成回调地狱。Promise 和 async/await 可以更好地解决回调地狱的问题,让异步编程更容易理解和维护。
函数式编程
函数式编程是一种构建复杂系统的编程范式。JS 中的函数是一等公民,具有高阶函数、柯里化和函数组合等特性。函数式编程注重将问题拆分为更小、更简单的部分,并尽可能地减少副作用。函数式编程有助于代码的可读性和可维护性。