深入理解JS 笔记

56 阅读2分钟

JavaScript中有7种基本数据类型,以及1个复杂数据类型:

  1. Number(数字型):表示数值,包括整数和浮点数;
  2. String(字符串型):表示文本字符序列,通常用单引号或双引号括起来;
  3. Boolean(布尔型):只有两个值,true和false,用于逻辑判断;
  4. Undefined(未定义型):表示变量被声明了但没有赋值,默认值是 undefined;
  5. Null(空值型):表示故意赋值为空的变量,其值为 null;
  6. Symbol(符号型):在ES6中新增,通过Symbol()函数创建唯一的、不可变的值;
  7. BigInt(大整数型):在ES10中新增,用于精度较高的整数计算。
  8. Object(对象型):表示一组键值的集合,可以存储多种类型的数据,并提供了方法来操作这些数据。

在 JavaScript 中,作用域是指变量在代码中的可访问范围。常见的作用域包括全局作用域和函数作用域。

全局作用域表示变量可以在整个程序代码中被访问。如果一个变量不是在任何一个函数内部定义的,那么它就是在全局作用域中定义的。可以使用 var、let 或 const 关键字声明全局变量,例如:


function test() {
  console.log(globalVar); // 输出:This is a global variable
}

test();

函数作用域表示变量只能在函数内部被访问,这种作用域在函数被执行时才会创建,并在函数执行结束后销毁。可以使用 var、let 或 const 关键字声明函数内部的变量,例如:

  var localVar = 'This is a local variable';
  console.log(localVar); // 输出:This is a local variable
}

test();
console.log(localVar); // 报错:localVar is not defined

在 ES6 中引入了块级作用域概念,即 let 和 const 声明的变量具有块级作用域,仅在其声明的花括号{}内有效。例如:

JavaScript 的执行过程可以进一步细分为以下几个步骤:

  1. 词法分析:将代码分解成单独的词法单元,例如关键字、变量名、操作符等。

  2. 语法分析:将词法单元组织成语法结构,例如语句、表达式等。这个过程会生成抽象语法树(AST)。

  3. 代码生成:将 AST 转换成可执行的字节码或机器码。

  4. 执行代码:按顺序执行生成的字节码或机器码。