内存空间的分配和回收
...
内存概述
内存概述内存内存可以存放数据。程序执行前需要先放到内存中才能被CPU处理————缓和CPU和硬盘之间的速度矛盾。 内存编址在多道程序环境下,系统中会有多个程序并发执行,也就是说会有多个程序的数据需要同时放到内存中。那么,如何区分各个程序的数据是放在什么地方的呢? 我们可以给内存编址 程序运行原理 程序经过编译、链接后生成的指令中指明的是逻辑地址(相对地址),即:相对于进程的起始地址而言的地址。 程序装入内存运行,操作系统会将程序中的逻辑地址转换为物理地址进行装入。 如果将程序调入了其他进程的地址空间中,就会导致内存资源混乱。有三种装入内存的方式。 程序装入绝对装入绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。 举例:如果知道装入模块要从地址为 100...
管程
...
死锁
...
线程
...
模块化
模块化概述模块化是指将一个复杂程序划分为一系列独立、可互操作的模块的过程。每个模块负责特定的功能或任务,并通过定义好的接口与其他模块进行通信。简单来说, 就是将代码进行分解、按功能进行管理。模块化的目的是提高代码的可维护性、可重用性、可测试性和可扩展性。开发者能够更容易地处理大型JavaScript项目。 目录结构 默认导出和导入123456789min.jsexport default function min(m, n){ return m > n ? n : m}index.jsimport min from './utils/min.js'console.log(min(12, 45)) 注意: export default 在同一个模块中只能使用一次 默认导入的变量名可以随便起,一般建议和模块功能保存一致。 按需导出和导入按照导入的变量必须要用花括号括起来,并且变量名和导出名必须保持一致。 12345678910111213141516math.jsexport function add(x,...
数组
数组概述JavaScript 数组是一种用于存储多个值的变量类型,并且这些值可以是任何数据类型(数字、字符串、对象等)。数组可以使用多种方式进行创建和操作。 主要方法创建数组 使用数组字面量: 1let arr = [1, 2, 3, "Hello", {name: "Alice"}]; 使用 Array 构造函数: 1let arr = new Array(1, 2, 3, "Hello", {name: "Alice"}); 创建一个具有特定长度的数组(初始值为 undefined): 1let arr = new Array(5); // 创建一个长度为5的数组 访问数组元素 通过索引访问(索引从0开始):12let arr = [10, 20, 30];console.log(arr[0]); // 输出: 10 修改数组元素 通过索引修改:123let arr = [10, 20, 30];arr[1] =...
对象
对象概述在JavaScript中,对象(Object)是一种复合值,它允许你将多个值(原始值或其他对象)组织成一个结构化的实体。对象是通过键值对(key-value pairs)来存储数据的,其中键(key)是一个字符串(或Symbol),而值(value)可以是任何数据类型,包括原始值(如数字、字符串)、其他对象或函数。 对象基本操作创建对象在JavaScript中,有几种创建对象的方法: 对象字面量: 1234567let person = { name: "Alice", age: 30, greet: function() { console.log("Hello, my name is " + this.name); }}; 构造函数: 123456789function Person(name, age) { this.name = name; this.age = age; this.greet = function() { ...
解构赋值
解构赋值概述目标:数组或者对象作用:让数组或对象的取值更便捷 数组解构1234567const arr = [11, 22, 33]// let a = arr[0]// let b = arr[1]// let c = arr[2]let [a, b, c] = arrconsole.log(a, b, c) {: height=75%, width=75%} 123456const arr = [11, 22, 33]let [, b, c] = arrconsole.log(b, c)let [a, , d] = arrconsole.log(a, d) {: height=75%, width=75%} 123const arr = [1, [2, 3], 4]let [a, [b, ], d] = arrconsole.log(a, b, d) {: height=75%, width=75%} 对象解构传统方法: 1234567891011const obj = { name:...
Async和Await
Async和Await概述在JavaScript中,async 和 await 是用于处理异步操作的关键字,它们提供了一种更简洁和易于理解的方式来编写异步代码。与传统的回调函数和Promise相比,async 和 await 使异步代码看起来更像是同步代码,从而提高了代码的可读性和维护性。 async 关键字async 关键字用于声明一个异步函数。这个函数会隐式地返回一个Promise对象。即使你没有在函数内部显式地返回一个Promise,JavaScript引擎也会自动将函数的返回值包装成一个Promise。 123async function myAsyncFunction() { // 这里可以包含同步和异步操作} await 关键字await...