当前位置: 首页 > news >正文

js基础知识

好的,完全理解。我们已经学习了很多高阶的应用和编程模式,现在是时候回过头来,像整理工具箱一样,系统地梳理一遍 JavaScript 的基础语法和核心知识点,确保地基的每一个角落都坚固。

你提到的异或运算符 (^) 就是一个很好的例子——它属于语言的基础构成,但在日常高层应用中不常用,却又是完整知识体系中不可或-缺的一环。

下面,我为你汇总一份 JavaScript 的核心基础知识清单,它会像一个“备忘录”或“速查手册”。


JavaScript 核心基础知识汇总

1. 变量声明与数据类型 (Variables & Data Types)
  • 声明 (Declaration):

    • let: 块级作用域变量,可以被重新赋值。
    • const: 块级作用域常量,声明时必须赋值,且不能被重新赋值(但如果值是对象或数组,其内部内容可以修改)。
    • var: 函数作用域变量(ES6前使用,现已不推荐)。
  • 数据类型 (Data Types):

    • 七种原始类型 (Primitives):
      • string: 文本,如 'hello'
      • number: 数字,如 123, 3.14。也包括 NaNInfinity
      • boolean: 布尔值,truefalse
      • null: 表示“空值”或“无对象”。是一个刻意赋的值。
      • undefined: 表示“未定义”。变量已声明但未赋值时的默认值。
      • symbol: ES6新增,表示唯一的、不可变的值。
      • bigint: ES2020新增,用于表示超大整数。
    • 一种引用类型 (Reference Type):
      • object: 复杂数据结构,包括普通对象 {}、数组 []、函数 function(){}、日期 new Date() 等。
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 语言的“原子”和“分子”。我们之前学习的 classPromise、模块化等,都是基于这些更基础的知识构建起来的“宏伟建筑”。

希望这份汇总能帮你巩固基础,查漏补缺!

http://www.dtcms.com/a/264090.html

相关文章:

  • 【组合数学】P11362 [NOIP2024] 遗失的赋值|普及+
  • 事务隔离级别深度解析:机制、语法与实战指
  • 力扣74 搜索二维矩阵
  • [密码学实战]深入解析ASN.1和DER编码:以数字签名值为例(三十一)
  • UniApp完全支持快应用QUICKAPP-以及如何采用 Uni 模式开发发行快应用优雅草卓伊凡
  • 从 Copilot 到 通用 Agent : 大厂在 AI Coding 上的应用和挑战
  • 华为云开始了“开发者空间 AI Agent 开发”活动
  • Anthropic 开源 LLM“电路追踪器”:首次可视化语言模型的“推理路径”!
  • SQLite与MySQL:嵌入式与客户端-服务器数据库的权衡
  • 使用mavros启动多机SITL仿真
  • 9-2 MySQL 分析查询语句:EXPLAIN(详细说明)
  • react-数据Mock实现——json-server
  • Jenkins 插件深度应用:让你的CI/CD流水线如虎添翼 [特殊字符]
  • 华锐互动:全方位定制化 VR 内容制作服务流程剖析​
  • [Python 基础课程]字符串
  • Redis集群数据流解析:从分层设计到一致性难题破解
  • Vue3 中 Excel 导出的性能优化与实战指南
  • A模块 系统与网络安全 第三门课 网络通信原理-3
  • Badoo×亚矩云手机:社交约会革命的“云端心跳加速剂“
  • 论文阅读:Align and Prompt (ALPRO 2021.12)
  • 狂神说 - Mybatis 学习笔记 --下
  • SVN 分支管理(本文以Unity项目为例)
  • 【C++】inline的作用
  • 齿轮的齿厚极限偏差如何确定?一起学习一下
  • Vue3——富文本
  • 地震灾害的模拟
  • win11,visual studio 2022,配置dcmtk,opencv
  • vue vxe-table 自适应列宽,根据内容自适应宽度的2种使用方式
  • MySQL非阻塞创建索引的方法
  • golang generic 2022-04-13