js基础知识
好的,完全理解。我们已经学习了很多高阶的应用和编程模式,现在是时候回过头来,像整理工具箱一样,系统地梳理一遍 JavaScript 的基础语法和核心知识点,确保地基的每一个角落都坚固。
你提到的异或运算符 (^
) 就是一个很好的例子——它属于语言的基础构成,但在日常高层应用中不常用,却又是完整知识体系中不可或-缺的一环。
下面,我为你汇总一份 JavaScript 的核心基础知识清单,它会像一个“备忘录”或“速查手册”。
JavaScript 核心基础知识汇总
1. 变量声明与数据类型 (Variables & Data Types)
-
声明 (Declaration):
let
: 块级作用域变量,可以被重新赋值。const
: 块级作用域常量,声明时必须赋值,且不能被重新赋值(但如果值是对象或数组,其内部内容可以修改)。var
: 函数作用域变量(ES6前使用,现已不推荐)。
-
数据类型 (Data Types):
- 七种原始类型 (Primitives):
string
: 文本,如'hello'
。number
: 数字,如123
,3.14
。也包括NaN
和Infinity
。boolean
: 布尔值,true
或false
。null
: 表示“空值”或“无对象”。是一个刻意赋的值。undefined
: 表示“未定义”。变量已声明但未赋值时的默认值。symbol
: ES6新增,表示唯一的、不可变的值。bigint
: ES2020新增,用于表示超大整数。
- 一种引用类型 (Reference Type):
object
: 复杂数据结构,包括普通对象{}
、数组[]
、函数function(){}
、日期new Date()
等。
- 七种原始类型 (Primitives):
2. 运算符 (Operators)
这是语言的“动词”,用于执行各种操作。
-
赋值运算符 (Assignment):
=
: 赋值,如let a = 5;
+=
,-=
,*=
,/=
: 复合赋值,如a += 2;
(等同于a = a + 2;
)
-
算术运算符 (Arithmetic):
+
(加),-
(减),*
(乘),/
(除)%
(取余/模):10 % 3
// -> 1**
(幂):2 ** 3
// -> 8++
(自增),--
(自减)
-
比较运算符 (Comparison):
==
(等于): 会进行类型转换,'5' == 5
// -> true (不推荐使用)!=
(不等于): 会进行类型转换。===
(严格等于): 不进行类型转换,值和类型都必须相同。'5' === 5
// -> false (推荐使用)!==
(严格不等于): 不进行类型转换。>
(大于),<
(小于),>=
(大于等于),<=
(小于等于)
-
逻辑运算符 (Logical):
&&
(与/AND): 两边都为true
才返回true
。有“短路”特性。||
(或/OR): 一边为true
就返回true
。有“短路”特性。!
(非/NOT): 取反。!true
// -> false
-
位运算符 (Bitwise) - 你提到的重点
- 它们将操作数视为32位的二进制数进行操作,在Web开发中不常用,但在某些算法、图形或底层操作中有用。
&
(按位与):5 & 1
// 0101 & 0001 -> 0001 (结果为 1)|
(按位或):5 | 1
// 0101 | 0001 -> 0101 (结果为 5)^
(按位异或):5 ^ 1
// 0101 ^ 0001 -> 0100 (结果为 4)。规则:两个位不同时为1,相同时为0。~
(按位非):~5
// ~0101 -> 1010 (结果为 -6)<<
(左移):5 << 1
// 0101 << 1 -> 1010 (结果为 10, 相当于乘以2)>>
(右移):5 >> 1
// 0101 >> 1 -> 0010 (结果为 2, 相当于除以2取整)
-
其他常用运算符:
- 三元运算符:
condition ? valueIfTrue : valueIfFalse
typeof
: 返回操作数的类型字符串。typeof 123
// -> “number”instanceof
: 判断一个对象是否是某个类的实例。[] instanceof Array
// -> true
- 三元运算符:
3. 控制流 (Control Flow)
决定代码执行的路径。
- 条件语句:
if...else if...else
switch...case...default
- 循环语句:
for
:for (let i = 0; i < 5; i++) { ... }
while
:while (condition) { ... }
do...while
: 先执行一次,再判断条件。for...in
: 遍历对象的可枚举属性(通常是键名)。for...of
: 遍历可迭代对象(如数组、字符串、Map、Set)的值。
4. 函数 (Functions)
- 函数声明 (Declaration):
function myFunction() {}
(会被提升到作用域顶部) - 函数表达式 (Expression):
const myFunction = function() {};
- 箭头函数 (Arrow Function):
const myFunction = () => {};
(没有自己的this
,arguments
) - 参数默认值:
function greet(name = 'Guest') {}
- 剩余参数:
function sum(...numbers) {}
5. 作用域 (Scope)
变量和函数的可访问范围。
- 全局作用域 (Global Scope): 在所有地方都能访问。
- 函数作用域 (Function Scope): 变量只在函数内部可访问(
var
的作用域)。 - 块级作用域 (Block Scope): 变量只在
{}
代码块内部可访问(let
,const
的作用域)。
6. 错误处理 (Error Handling)
try...catch...finally
: 用于捕获和处理可能发生的错误。try {// 尝试执行的代码throw new Error("Something went wrong!"); } catch (error) {// 捕获到错误时执行的代码console.error(error.message); } finally {// 无论是否出错,最后都会执行的代码console.log("Cleanup complete."); }
这份清单涵盖了构成 JavaScript 语言的“原子”和“分子”。我们之前学习的 class
、Promise
、模块化等,都是基于这些更基础的知识构建起来的“宏伟建筑”。
希望这份汇总能帮你巩固基础,查漏补缺!