跳到主要内容

JavaScript 基础

本文梳理 JavaScript 语言的基础语法要点,适合作为入门或复习参考。

变量声明:var、let、const

var 是函数级作用域,存在变量提升,允许重复声明;letconst 是块级作用域,存在暂时性死区,const 声明的引用不可变但对象内容可变。

const obj = { a: 1 };
obj.a = 2; // 允许
obj = {}; // TypeError

基本类型与引用类型

基本类型(numberstringbooleannullundefinedsymbolbigint)按值存储;引用类型(objectarrayfunction)按引用存储,赋值时复制的是指针。比较时 === 对引用类型比较内存地址。

函数声明与表达式

函数声明会整体提升,可在定义前调用;函数表达式仅变量提升,值为 undefined 时调用会报错。箭头函数没有自己的 this,也不能作为构造函数。

hoisted(); // 正常
function hoisted() {}

notHoisted(); // TypeError
const notHoisted = function () {};

作用域与提升

var 声明的变量提升至函数顶部,初始化为 undefined;let/const 提升但处于暂时性死区,声明前访问会报错。词法作用域由代码书写位置决定,闭包可保留外层变量。

this 指向规则

this 的值在调用时确定:普通函数调用指向 undefined(严格模式)或全局对象;作为对象方法调用指向该对象;call/apply/bind 可显式绑定;箭头函数继承外层 this。构造函数中 this 指向新创建的实例。