前端页面 JavaScript数据交互

news2025/5/20 14:32:41

前言:学习JavaScript为前端设置动态效果,实现交互。JavaScript是一种广泛应用于网页开发的脚本语言,它能够使网页变得更加动态和交互性。作为一种客户端脚本语言JavaScript可以被嵌入到HTML中,并且可以被所有现代的网页浏览器支持。

JavaScript,HTML,CSS共同构成网页

  • HTML:用来定义网页内容,例如:标题,正文,图像等(HTML是网页制作的基础语言---->跳转学习:HTML);
  • CSS:用来修饰网页组件得外观,例如:颜色,大小,位置,背景等等(CSS是网页制作的修饰语言--->跳转学习:CSS)
  • JavaScript:用来实时更新网页内容,例如:从服务器中获取数据并更新到网页中,修改某些标签的样式内容,可以让网页变得生动.

Javascript的使用方式

HTML 页面内嵌式:
  • 这是最简单的 JavaScript 书写方式,直接在 HTML 页面中使用 <script> 标签嵌入 JavaScript 代码。

  • 优点是简单易用,适合小型项目或快速验证代码效果。

  • 缺点是代码维护性差,不便于大型项目的组织和管理。

<!DOCTYPE html>
<html>
<head>
    <title>内嵌式 JavaScript</title>
</head>
<body>
    <h1 id="demo">Hello, JavaScript!</h1>
    <button onclick="changeText()">点我改变</button>

    <script>
        function changeText() {
            document.getElementById("demo").innerHTML = "我是内嵌式!";
        }
    </script>
</body>
</html>
HTML 页面内联式:
  • 将 JavaScript 代码直接嵌入在 HTML 元素的事件属性中,如 onclickonmouseover 等。

  • 优点是操作简单,可以快速绑定事件。

  • 缺点是代码可读性差,且不便于维护和扩展。

    <!DOCTYPE html>
    <html>
    <head>
        <title>内联式 JavaScript</title>
    </head>
    <body>
        <h1 id="demo">Hello, JavaScript!</h1>
        <button onclick="document.getElementById('demo').innerHTML = '我是内联式!'">点我改变</button>
    </body>
    </html>
    外部 JavaScript 文件:
  • 将 JavaScript 代码写在一个单独的 .js 文件中,然后通过 HTML 的 <script> 标签引用该文件。

  • 优点是代码组织更清晰,便于维护和复用。

  • 缺点是需要额外的文件管理,开发初期可能会增加一些复杂度。

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>外部 JavaScript 文件</title>
</head>
<body>
    <h1 id="demo">Hello, JavaScript!</h1>
    <button onclick="changeText()">点我改变</button>

    <script src="script.js"></script>
</body>
</html>

JS文件:

function changeText() {
    document.getElementById("demo").innerHTML = "Text changed!";
}

JS文件的代码执行顺序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS文件的代码执行顺序</title>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			alert("写在<head>标签中");
		</script>
	</head>
	<body>
		<script>
			alert("写在<body>标签中");
		</script>
	</body>
</html>

使用模块化方式书写(ES6 模块)
  • 随着 ES6 的引入,JavaScript 支持模块化开发。通过 importexport 关键字,可以将代码分割成多个模块,便于组织大型项目。

  • 优点是提供了更好的代码组织和复用机制,适合大型项目。

  • 缺点是需要一定的学习成本,并且需要额外的构建工具支持。

Javascript的基本语法

变量:

变量的命名规则
  • 变量名必须以字母、下划线(_)、美元符号($)开头。

  • 后续字符可以是字母、下划线、美元符号或数字(0 - 9)。

  • 变量名区分大小写。

  • 不能使用 JavaScript 的保留字作为变量名,如 ifforclass 等。

使用 var 声明变量
  • var 是 JavaScript 中最早用于声明变量的关键字,具有函数作用域(在函数内声明时)或全局作用域(在全局范围内声明时)。它允许重复声明同一个变量。

var x = 10;
var x = 20; // 可以重复声明
console.log(x); // 输出 20
使用 let 声明变量
  • let 是 ES6 引入的用于声明变量的关键字,具有块级作用域(在代码块 {} 内声明),不能在同一个作用域内重复声明同一个变量。

let y = 10;
// let y = 20; // 会报错,不能重复声明
{
    let y = 30;
    console.log(y); // 输出 30
}
console.log(y); // 输出 10
使用 const 声明变量
  • const 也是 ES6 引入的,用于声明常量。它声明的变量必须初始化,并且不能重新赋值,同样具有块级作用域。

const z = 10;
// z = 20; // 会报错,不能重新赋值
const obj = { a: 1 };
obj.a = 2; // 可以修改对象的属性
console.log(obj); // 输出 { a: 2 }
变量的作用域
全局作用域
  • 在全局范围内声明的变量具有全局作用域,可以在任何地方访问。

var globalVar = "I'm global";
function checkScope() {
    console.log(globalVar); // 可以访问
}
checkScope();
函数作用域(var)
  • 使用 var 在函数内声明的变量具有函数作用域,只能在函数内部访问。

function func() {
    var funcVar = "I'm in function";
    console.log(funcVar); // 可以访问
}
func();
// console.log(funcVar); // 会报错,无法访问
块级作用域(let 和 const)
  • 使用 letconst 在代码块 {} 内声明的变量具有块级作用域,只能在代码块内部访问。

if (true) {
    let blockVar = "I'm in block";
    console.log(blockVar); // 可以访问
}
// console.log(blockVar); // 会报错,无法访问

基本数据类型: 

基本数据类型是不可变的数据类型,也称为原始数据类型。JavaScript 有 7 种基本数据类型:

数据类型特点描述常见定义方式示例及说明
string用于表示文本数据,不可变。使用单引号、双引号或反引号定义。单引号、双引号或反引号包裹的文本。const str1 = 'Hello';const str2 = "World";const str3 = 'JavaScript';
number用于表示整数和浮点数,以及特殊值 Infinity-Infinity 和 NaN直接赋值数字。const num1 = 10;const num2 = 3.14;const num3 = Infinity;
boolean表示逻辑值,只有两个值:true 和 false直接赋值 true 或 falseconst isTrue = true;const isFalse = false;
null表示空值或不存在的值,只有一个值 null直接赋值 nulllet nullable = null;
undefined表示变量已声明但未赋值,或对象属性、函数参数不存在。未赋值的变量或未定义的属性。let undeclared;,未定义的对象属性会返回 undefined
symbolES6 引入,表示唯一的、不可变的值,常用于创建对象的唯一属性名。使用 Symbol() 函数创建。const sym1 = Symbol("description");const sym2 = Symbol("description");console.log(sym1 === sym2); 输出 false
bigintES2020 引入,用于表示任意精度的整数,可安全存储和操作非常大的整数值。在数字后添加 n 后缀。const bigInt1 = 123456789012345678901234567890n;
string(字符串)
  • 用于表示文本数据,使用单引号(')、双引号(")或反引号(`)定义。字符串是字符的序列,一旦创建,内容就不能改变。

const str1 = 'Hello';
const str2 = "World";
const str3 = `JavaScript`;
console.log(str1); // 输出 "Hello"
console.log(str2); // 输出 "World"
console.log(str3); // 输出 "JavaScript"
number(数字)
  • 用于表示整数和浮点数。JavaScript 中的数字是双精度 64 位浮点数。此外,还有特殊的数字值,如 Infinity(无穷大)、-Infinity(负无穷大)和 NaN(非数字)。

const intNum = 10; // 整数
const floatNum = 3.14; // 浮点数
const bigNum = 123456789012345678901234567890; // 大整数(在 ES2020 之前可能会丢失精度)
const infinity = Infinity;
const notANumber = NaN;
console.log(typeof intNum); // 输出 "number"
console.log(typeof floatNum); // 输出 "number"
console.log(typeof bigNum); // 输出 "number"
console.log(typeof infinity); // 输出 "number"
console.log(typeof notANumber); // 输出 "number"
boolean(布尔值)
  • 用于表示逻辑值,只有两个值:true(真)和 false(假)。常用于条件判断。

const isTrue = true;
const isFalse = false;
console.log(isTrue); // 输出 true
console.log(isFalse); // 输出 false
null(空值)
  • 表示一个空值或不存在的值。它是一个独立的数据类型,只有一个值 null。通常用于表示变量没有指向任何对象。

let nullable = null;
console.log(nullable); // 输出 null
console.log(typeof nullable); // 输出 "object"(这是一个历史遗留问题,实际上 null 是一个独立的类型)
undefined(未定义)
  • 表示变量已被声明,但尚未赋值。或者表示对象属性或函数参数不存在。

let undeclared;
console.log(undeclared); // 输出 undefined
console.log(typeof undeclared); // 输出 "undefined"
symbol(符号)
  • ES6 引入的一种新的原始数据类型,用于表示唯一的、不可变的值。常用于创建对象的唯一属性名。

const sym1 = Symbol("description");
const sym2 = Symbol("description");
console.log(sym1 === sym2); // 输出 false,因为每个 Symbol 都是唯一的
bigint(大整数)
  • ES2020 引入的一种新的原始数据类型,用于表示任意精度的整数。它可以安全地存储和操作非常大的整数值。

const bigInt1 = 123456789012345678901234567890n;
const bigInt2 = 98765432109876543210987654321n;
console.log(bigInt1 + bigInt2); // 输出 123456789012345678901234567890n + 98765432109876543210987654321n 的结果

引用数据类型:

引用数据类型是复杂的数据类型,用于存储对象。变量存储的是对象在内存中的引用,而不是对象本身。JavaScript 中的引用数据类型包括:

引用数据类型特点描述常见定义方式示例及说明
Object用于表示一组无序的键值对集合,键是字符串或符号,值可以是任何数据类型。使用对象字面量 {} 或 new Object()const person = { name: "John", age: 30, isStudent: false };
Array用于存储多个值的有序集合,元素可以是任何数据类型,通过索引访问。使用数组字面量 [] 或 new Array()const numbers = [1, 2, 3, 4, 5];const mixed = [1, "two", true, { name: "John" }];
Function用于定义可执行的代码块,可以有参数和返回值,并且可以被调用。使用函数声明或函数表达式。function add(a, b) { return a + b; }const result = add(5, 3);
Date用于表示日期和时间。使用 new Date()const now = new Date();console.log(now); 输出当前日期和时间。
RegExp用于描述字符串模式,用于搜索、替换等操作。使用正则表达式字面量 /pattern/ 或 new RegExp()const pattern = /javascript/i;const str = "I love JavaScript!";console.log(pattern.test(str)); 输出 true
MapES6 引入,用于存储键值对,键可以是任何数据类型,并且可以获取键值对的数量。使用 new Map()const map = new Map();map.set("name", "John");map.set(1, "one");console.log(map.get("name")); 输出 "John"
SetES6 引入,用于存储唯一的值,可以是任何数据类型。使用 new Set()const set = new Set();set.add(1);set.add("two");console.log(set.size); 输出 2
WeakMapES6 引入,是一种键弱引用的对象集合,键必须是对象。使用 new WeakMap()const weakMap = new WeakMap();const obj = {};weakMap.set(obj, "value");console.log(weakMap.get(obj)); 输出 "value"
WeakSetES6 引入,是一个弱引用的值的集合,值必须是对象。使用 new WeakSet()const weakSet = new WeakSet();const obj = {};weakSet.add(obj);console.log(weakSet.has(obj)); 输出 true
Object(对象)
  • 用于表示一组无序的键值对集合。每个键是一个字符串或符号,值可以是任何数据类型。

const person = {
    name: "John",
    age: 30,
    isStudent: false
};
console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 30
console.log(person.isStudent); // 输出 false
Array(数组)
  • 用于存储多个值的有序集合。数组中的元素可以是任何数据类型,并且可以通过索引访问。

const numbers = [1, 2, 3, 4, 5];
const mixed = [1, "two", true, { name: "John" }];
console.log(numbers[0]); // 输出 1
console.log(mixed[3].name); // 输出 "John"
Function(函数)
  • 用于定义可执行的代码块。函数可以有参数和返回值,并且可以被调用。

function add(a, b) {
    return a + b;
}
const result = add(5, 3);
console.log(result); // 输出 8
Date(日期)
  • 用于表示日期和时间。

const now = new Date();
console.log(now); // 输出当前日期和时间
RegExp(正则表达式)
  • 用于描述字符串模式,用于搜索、替换等操作。

const pattern = /javascript/i;
const str = "I love JavaScript!";
console.log(pattern.test(str)); // 输出 true
console.log(str.match(pattern)); // 输出 ["JavaScript"]
Map(ES6 引入)
  • 用于存储键值对,键可以是任何数据类型,并且可以获取键值对的数量。

const map = new Map();
map.set("name", "John");
map.set(1, "one");
console.log(map.get("name")); // 输出 "John"
console.log(map.size); // 输出 2
Set(ES6 引入)
  • 用于存储唯一的值,可以是任何数据类型。

const set = new Set();
set.add(1);
set.add("two");
set.add(1); // 重复添加无效
console.log(set.size); // 输出 2
console.log(set.has(1)); // 输出 true

获取变量数据类型

使用 typeof 运算符

typeof 运算符返回一个字符串,表示未经计算的操作数的类型。

基本数据类型

  • 对于基本数据类型,typeof 返回以下字符串:

    • "string":字符串类型。

    • "number":数字类型。

    • "boolean":布尔类型。

    • "undefined":未定义类型。

    • "symbol":符号类型(ES6 引入)。

    • "bigint":大整数类型(ES2020 引入)。

const str = "Hello";
const num = 10;
const bool = true;
let und;
const sym = Symbol("description");
const big = 123456789012345678901234567890n;

console.log(typeof str); // 输出 "string"
console.log(typeof num); // 输出 "number"
console.log(typeof bool); // 输出 "boolean"
console.log(typeof und); // 输出 "undefined"
console.log(typeof sym); // 输出 "symbol"
console.log(typeof big); // 输出 "bigint"

null 的特殊情况

  • 对于 nulltypeof 返回 "object"。这是一个历史遗留问题,因为早期的 JavaScript 将 null 视为对象类型的空值。

  • const nullable = null;
    console.log(typeof nullable); // 输出 "object"
使用 instanceof 运算符

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。它通常用于检测引用数据类型的实例。

const obj = new Object();
const arr = new Array();
const date = new Date();
const regex = new RegExp();
const map = new Map();
const set = new Set();
const weakMap = new WeakMap();
const weakSet = new WeakSet();

console.log(obj instanceof Object); // 输出 true
console.log(arr instanceof Array); // 输出 true
console.log(date instanceof Date); // 输出 true
console.log(regex instanceof RegExp); // 输出 true
console.log(map instanceof Map); // 输出 true
console.log(set instanceof Set); // 输出 true
console.log(weakMap instanceof WeakMap); // 输出 true
console.log(weakSet instanceof WeakSet); // 输出 true
使用 Object.prototype.toString.call()

Object.prototype.toString.call() 方法可以更准确地检测数据类型,包括 nullundefined

const str = "Hello";
const num = 10;
const bool = true;
let und;
const sym = Symbol("description");
const big = 123456789012345678901234567890n;
const nullable = null;

console.log(Object.prototype.toString.call(str)); // 输出 "[object String]"
console.log(Object.prototype.toString.call(num)); // 输出 "[object Number]"
console.log(Object.prototype.toString.call(bool)); // 输出 "[object Boolean]"
console.log(Object.prototype.toString.call(und)); // 输出 "[object Undefined]"
console.log(Object.prototype.toString.call(sym)); // 输出 "[object Symbol]"
console.log(Object.prototype.toString.call(big)); // 输出 "[object BigInt]"
console.log(Object.prototype.toString.call(nullable)); // 输出 "[object Null]"

获取变量数据类型的方法如下:

  • 使用 typeof 运算符可以快速判断基本数据类型和函数类型。

  • 使用 instanceof 运算符可以检测引用数据类型的实例。

  • 使用 Object.prototype.toString.call() 方法可以更准确地检测所有数据类型,包括 nullundefined

数据类型转换:

隐式转换(类型 coercion)自动转换
  • JavaScript 会在某些操作中自动将一个数据类型转换为另一个数据类型。例如,将数字与字符串拼接时,数字会被转换为字符串。

+ 运算符
  • 字符串拼接:当 + 运算符的一个操作数是字符串时,另一个操作数会被隐式转换为字符串,然后进行拼接。

const num = 10;
const str = "20";
console.log(num + str); // 输出 "1020"(数字 10 被转换为字符串)

        数值相加:当两个操作数都是数字时,+ 运算符会进行数值相加。

const num1 = 10;
const num2 = 20;
console.log(num1 + num2); // 输出 30
其他运算符(-*/
  • 当使用 -*/ 运算符时,操作数会被隐式转换为数字,然后再进行相应的数值运算。
const strNum1 = "10";
const strNum2 = "20";
console.log(strNum1 - strNum2); // 输出 -10(字符串被转换为数字)
console.log(strNum1 * strNum2); // 输出 200
console.log(strNum1 / strNum2); // 输出 0.5
布尔值的隐式转换

在条件判断中,JavaScript 会将非布尔值转换为布尔值。以下是会被转换为 false 的值(称为 “假值”):

  • undefined

  • null

  • 0

  • NaN

  • ""(空字符串)

  • false

其他值都会被转换为 true(称为 “真值”)。

注意事项

  • 隐式转换可能导致意外行为:由于 JavaScript 的自动类型转换,有时会导致意外的结果。例如,"0" 在条件判断中会被转换为 true,因为它是非空字符串,而不是数字 0

显式转换(类型转换)强制转换
  • 可以使用特定的方法进行数据类型转换,如 Number()String()Boolean() 等。

转换为字符串
  • 使用 String() 函数可以将任何数据类型转换为字符串。

const num = 10;
const bool = true;
const obj = { name: "John" };
console.log(String(num)); // 输出 "10"
console.log(String(bool)); // 输出 "true"
console.log(String(obj)); // 输出 "[object Object]"
转换为数字
  • 使用 Number() 函数可以将字符串或其他值转换为数字。

const strNum = "123";
const strNotNum = "abc";
console.log(Number(strNum)); // 输出 123
console.log(Number(strNotNum)); // 输出 NaN(不是数字)
console.log(Number(true)); // 输出 1
console.log(Number(false)); // 输出 0
转换为布尔值
  • 使用 Boolean() 函数可以将任何值转换为布尔值。

console.log(Boolean(0)); // 输出 false
console.log(Boolean("Hello")); // 输出 true
console.log(Boolean("")); // 输出 false
console.log(Boolean(null)); // 输出 false
console.log(Boolean({})); // 输出 true(空对象被视为 true)

JavaScript的前篇基础就先到这里啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2380029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

esp32课设记录(三)mqtt通信记录 附mqtt介绍

目录 安装mqttx&#xff08;云端部署&#xff09; 安装mosquitto&#xff08;本地部署&#xff09; 编程&#xff0c;连接wifi 编程&#xff0c;连接mqtt&#xff0c;实现数据接收 实际效果展示&#xff1a; 附录&#xff1a;mqtt介绍 工作流程简述&#xff1a; 工作流…

string类(详解)

【本节目标】 1. 为什么要学习string类 2. 标准库中的string类 3. string类的模拟实现 4. 扩展阅读 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 C 语言中&#xff0c;字符串是以 \0 结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c; C 标准库中提供…

MATLAB | R2025a 更新了哪些有趣的东西?

千呼万唤始出来&#xff0c;MATLAB R2025A 来见面&#xff0c;这次更新比往常晚了两个月&#xff0c;让我们看看更了哪些好玩的新东西叭&#xff1a;首先下载更新启动一气呵成&#xff0c;映入眼帘的是&#xff1a; 1 基本界面 基本界面变得和 MATLAB 网页版一模一样了&#…

前缀和——和为K的子数组

作者感觉本题稍稍有点难度&#xff0c;看了题解也思考了有一会TWT 显然&#xff0c;暴力我们是不可取的&#xff0c;但这里我们可以采取一种新的遍历数组形式&#xff0c;从后向前&#xff0c;也就是以i位置为结尾的所有子数组&#xff0c;这个子数组只统计i位置之前的。 然后…

深入理解 ZAB:ZooKeeper 原子广播协议的工作原理

目录 ZAB 协议&#xff1a;ZooKeeper 如何做到高可用和强一致&#xff1f;&#x1f512;ZAB 协议的核心目标 &#x1f3af;ZAB 协议的关键概念 &#x1f4a1;ZAB 协议的运行阶段 &#x1f3ac;阶段一&#xff1a;Leader 选举 (Leader Election) &#x1f5f3;️阶段二&#xff…

GraphPad Prism项目的管理

《2025新书现货 GraphPad Prism图表可视化与统计数据分析&#xff08;视频教学版&#xff09;雍杨 康巧昆 清华大学出版社教材书籍 9787302686460 GraphPadPrism图表可视化 无规格》【摘要 书评 试读】- 京东图书 GraphPad Prism统计数据分析_夏天又到了的博客-CSDN博客 项目…

驱动-Linux定时-timer_list

了解内核定时相关基础知识 文章目录 简要介绍timer_list 特点API 函数实验测试程序 - timer_mod.c编译文件-Makefile实验验证 注意事项总结 简要介绍 硬件为内核提供了一个系统定时器来计算流逝的时间&#xff08;即基于未来时间点的计时方式&#xff0c; 以当前时刻为计时开始…

STM32F103_LL库+寄存器学习笔记22 - 基础定时器TIM实现1ms周期回调

导言 如上所示&#xff0c;STM32F103有两个基本定时器TIM6与TIM7&#xff0c;所谓「基本定时器」&#xff0c;即功能最简单的定时器。 项目地址&#xff1a; github: LL库: https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_ll_library22_Basic_Timer寄存器方…

5个yyds的.Net商城开源项目

今天一起来盘点下5个商城开源项目。 1、支持多语言、多商店的商城&#xff0c;.Net7 EF7领域驱动设计架构&#xff08;Smartstore&#xff09; 项目简介 Smartstore 支持桌面和移动平台、多语言、多商店、多货币的商城&#xff0c;并支持SEO优化&#xff0c;支持无限数量的…

[项目深挖]仿muduo库的并发服务器的解析与优化方案

标题&#xff1a;[项目深挖]仿muduo库的并发服务器的优化方案 水墨不写bug 文章目录 一、buffer 模块&#xff08;1&#xff09;线性缓冲区直接扩容---->环形缓冲区定时扩容&#xff08;只会扩容一次&#xff09;&#xff08;2&#xff09;使用双缓冲&#xff08;Double Buf…

国标GB28181视频平台EasyGBS校园监控方案:多场景应用筑牢安全防线,提升管理效能

一、方案背景​ 随着校园规模不断扩大&#xff0c;传统监控系统因设备协议不兼容、数据分散管理&#xff0c;导致各系统之间相互独立、数据无法互通共享。在校园安全防范、教学管理以及应急响应过程中&#xff0c;这种割裂状态严重影响工作效率。国标GB28181软件EasyGBS视频云…

SHIMADZU岛津 R300RC300 Operation Manual

SHIMADZU岛津 R300RC300 Operation Manual

使用 Docker 部署 React + Nginx 应用教程

目录 1. 创建react项目结构2. 创建 .dockerignore3. 创建 Dockerfile4. 创建 nginx.conf5. 构建和运行6. 常用命令 1. 创建react项目结构 2. 创建 .dockerignore # 依赖目录 node_modules npm-debug.log# 构建输出 dist build# 开发环境文件 .git .gitignore .env .env.local …

API Gateway REST API 集成 S3 服务自定义 404 页面

需求分析 使用 API Gateway REST API 可以直接使用 S3 作为后端集成对外提供可以访问的 API. 而当访问的 URL 中存在无效的桶, 或者不存在的对象时, API Gateway 默认回向客户端返回 200 状态码. 而实际上这并不是正确的响应, 本文将介绍如何自定义返回 404 错误页面. 基本功…

关于systemverilog中在task中使用force语句的注意事项

先看下面的代码 module top(data);logic clk; inout data; logic temp; logic sampale_data; logic [7:0] data_rec;task send_data(input [7:0] da);begin(posedge clk);#1;force datada[7];$display(data);(posedge clk);#1;force datada[6]; $display(data); (posed…

Python Day26 学习

继续NumPy的学习 数组的索引 一维数组的索引 创建及输出 arr1d np.arange(10) # 数组: [0 1 2 3 4 5 6 7 8 9] arr1d array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 取出数组的第一个元素&#xff0c;最后一个元素 代码实现 arr1d[0] arr1d[-1] 取出数组中索引为3&#x…

解决:npm install报错,reason: certificate has expired

目录 1. 问题分析2. 问题解决2.1 查看配置的镜像2.2 修改镜像源 种一棵树最好的时间是10年前&#xff0c;其次就是现在&#xff0c;加油&#xff01; --by蜡笔小柯南 1. 问题分析 启动前…

中科固源Wisdom平台发现NASA核心飞行控制系统(cFS)通信协议健壮性缺陷!

中科固源Wisdom平台发现NASA核心飞行控制系统(cFS)通信协议健壮性缺陷&#xff0c;接下来内容将进行核心要点概述&#xff0c;分别从地位、重要性和应用场景三方面进行简明阐述&#xff1a; cFS&#xff08;core Flight System&#xff09;是NASA戈达德太空飞行中心&#xff08…

嵌入式学习笔记DAY23(树,哈希表)

一、树 1.树的概念 之前我们一直在谈的是一对一的线性结构&#xff0c;现实中&#xff0c;还存在很多一对多的情况需要处理&#xff0c;一对多的线性结构——树。 树的结点包括一个数据元素及若干指向其子树的分支&#xff0c;结点拥有的子树数称为结点的度。度为0的结点称为叶…

仓颉开发语言入门教程:搭建开发环境

仓颉开发语言作为华为为鸿蒙系统自研的开发语言&#xff0c;虽然才发布不久&#xff0c;但是它承担着极其重要的历史使命。作为鸿蒙开发者&#xff0c;掌握仓颉开发语言将成为不可或缺的技能&#xff0c;今天我们从零开始&#xff0c;为大家分享仓颉语言的开发教程&#xff0c;…