ECMAScript基础入门:从语法到应用

 

在此之前我以及发布过关于JavaScript基础知识点大家也可以参考

大家有关于JavaScript知识点不知道可以去

🎉博客主页:阿猫的故乡

🎉系列专栏:JavaScript专题栏

🎉ajax专栏:ajax知识点

🎉欢迎关注:👍点赞🙌收藏✍️留言

以下我总结关于ecm重要知识点!

目录

学习目标:

学习内容:

学习时间:

学习产出:

ECMAScript简介:了解ECMAScript的起源、发展历程和版本:

 JavaScript基础语法:学习变量、数据类型、运算符、条件语句、循环语句等基本语法。

 函数和对象:掌握函数的定义与调用、作用域、闭包等概念;学习对象的创建、属性与方法的使用。

每一个都详细代码举例加上案例演示

DOM操作:理解DOM的概念,学习如何通过JavaScript操作HTML元素。 

 事件处理:学习如何使用事件监听器和事件处理函数来实现交互功能。

 异步编程:掌握异步编程的概念,学习使用回调函数、Promise和async/await处理异步任务。

 错误处理和调试:了解常见的JavaScript错误类型和调试技巧。


学习目标:

  1. 理解ECMAScript的基本概念和发展历程。
  2. 掌握JavaScript的基本语法和常用的控制结构。
  3. 熟悉JavaScript中的函数和对象的使用。
  4. 能够处理数组和字符串的操作。
  5. 熟悉DOM操作和事件处理。
  6. 掌握异步编程的基本知识和技巧。
  7. 理解常见的JavaScript错误类型和调试技巧,能够进行基本的错误处理和调试。

学习内容:

  1. ECMAScript简介:了解ECMAScript的起源、发展历程和版本。
  2. JavaScript基础语法:学习变量、数据类型、运算符、条件语句、循环语句等基本语法。
  3. 函数和对象:掌握函数的定义与调用、作用域、闭包等概念;学习对象的创建、属性与方法的使用。
  4. 数组和字符串:熟悉数组的操作、遍历、排序等;了解字符串的常用方法。
  5. DOM操作:理解DOM的概念,学习如何通过JavaScript操作HTML元素。
  6. 事件处理:学习如何使用事件监听器和事件处理函数来实现交互功能。
  7. 异步编程:掌握异步编程的概念,学习使用回调函数、Promise和async/await处理异步任务。
  8. 错误处理和调试:了解常见的JavaScript错误类型和调试技巧。

学习时间:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

ECMAScript简介:了解ECMAScript的起源、发展历程和版本:

ECMAScript(简称ES)是一种由ECMA国际(European Computer Manufacturers Association)制定的脚本语言标准,最初于1997年发布。ECMAScript是JavaScript的规范化版本,JavaScript是ECMAScript在Web浏览器中的实现。

起源:ECMAScript起源于Netscape公司推出的一种名为LiveScript的脚本语言,后来与Sun公司合作进行标准化,并更名为JavaScript。为了确保JavaScript的规范性和跨平台性,ECMA国际成立了TC39委员会,负责制定和更新ECMAScript标准。

发展历程:ECMAScript标准经历了多个版本的发展。最早的版本是ECMAScript 1,随后是ECMAScript 2、ECMAScript 3、ECMAScript 4(未通过)和ECMAScript 5。ECMAScript 5在2009年发布,成为JavaScript的主流版本。之后,ECMAScript进入了一种按年份命名的更新模式,例如ECMAScript 2015、ECMAScript 2016和ECMAScript 2017等。从ECMAScript 2015开始,标准每年发布一个新版本,引入了许多新的语言特性和功能。

版本:每个ECMAScript版本都有其特定的特性和升级内容。例如,ECMAScript 5引入了严格模式、JSON对象和数组的新方法等。ECMAScript 2015引入了let和const关键字、箭头函数、模板字符串等新特性。而ECMAScript 2016和ECMAScript 2017则引入了更多的功能,如可选链操作符(Optional Chaining)、空值合并操作符(Nullish Coalescing Operator)、异步函数等。

通过了解ECMAScript的起源、发展历程和不同版本的特性,我们可以更好地理解和应用JavaScript。同时,了解ECMAScript的最新特性和更新内容也有助于我们保持对JavaScript语言的学习和技术的更新。

 JavaScript基础语法:学习变量、数据类型、运算符、条件语句、循环语句等基本语法。

JavaScript基础语法是学习和理解JavaScript编程的重要一步。以下是一些常见的基础语法内容:

  1. 变量:学习如何声明和使用变量,了解变量的作用域和命名规则。

    // 声明和初始化变量
    var name = "John";
    let age = 25;
    const PI = 3.14;// 输出变量的值
    console.log(name);
    

  2. 数据类型:了解JavaScript的基本数据类型,如字符串、数字、布尔值和特殊值(null和undefined)。

    let name = "John";
    let age = 25;
    let isStudent = true;
    let address = null;
    let phoneNumber; // undefinedconsole.log(typeof name); // 输出 "string"
    

  3. 运算符:学习JavaScript的算术运算符、比较运算符、逻辑运算符以及赋值运算符等。

    let num1 = 10;
    let num2 = 5;let sum = num1 + num2; // 加法运算
    let difference = num1 - num2; // 减法运算
    let product = num1 * num2; // 乘法运算
    let quotient = num1 / num2; // 除法运算
    let remainder = num1 % num2; // 取余运算console.log(sum); // 输出 15
    

  4. 条件语句:学习使用if语句、switch语句等进行条件判断。

    let age = 18;if (age >= 18) {console.log("成年人");
    } else {console.log("未成年人");
    }
    

  5. 循环语句:学习使用for循环、while循环等进行重复执行一段代码。

    for (let i = 0; i < 5; i++) {console.log(i);
    }let i = 0;
    while (i < 5) {console.log(i);i++;
    }
    

通过以上的基础语法的学习,你可以理解JavaScript的基本语法结构,为后续的JavaScript编程打下坚实的基础。你可以运用上述的代码举例和案例演示,加深对每个基础语法的理解和记忆。

案例演示:

好的,以下是对应每个部分的案例:

  1. 变量:
// 示例1:声明和初始化变量
var name = "John";
let age = 25;
const PI = 3.14;// 示例2:输出变量的值
console.log(name); // 输出 "John"

  1. 数据类型:
let name = "John";
let age = 25;
let isStudent = true;
let address = null;
let phoneNumber; // undefinedconsole.log(typeof name); // 输出 "string"

  1. 运算符:
let num1 = 10;
let num2 = 5;let sum = num1 + num2; // 加法运算
let difference = num1 - num2; // 减法运算
let product = num1 * num2; // 乘法运算
let quotient = num1 / num2; // 除法运算
let remainder = num1 % num2; // 取余运算console.log(sum); // 输出 15

  1. 条件语句:
let age = 18;if (age >= 18) {console.log("成年人");
} else {console.log("未成年人");
}

  1. 循环语句:
// for循环
for (let i = 0; i < 5; i++) {console.log(i);
}// while循环
let i = 0;
while (i < 5) {console.log(i);i++;
}

你可以运行这些代码示例,观察控制台输出并理解每个基础语法的运行结果。

 函数和对象:掌握函数的定义与调用、作用域、闭包等概念;学习对象的创建、属性与方法的使用。

  1. 函数的定义与调用:
// 函数的定义
function sayHello() {console.log("Hello!");
}// 函数的调用
sayHello(); // 输出 "Hello!"

  1. 作用域与闭包:
// 全局变量
let globalVariable = "I'm global";function outerFunction() {let outerVariable = "I'm outer";function innerFunction() {let innerVariable = "I'm inner";console.log(globalVariable); // 访问全局变量console.log(outerVariable); // 访问外部函数变量console.log(innerVariable); // 访问当前函数变量}innerFunction();
}outerFunction();

  1. 对象的创建与属性的使用:
// 对象的创建
let person = {name: "John",age: 25,isStudent: true,address: {street: "123 Main St",city: "New York"}
};// 访问对象属性
console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 25
console.log(person.address.city); // 输出 "New York"

  1. 对象的方法的使用:
// 对象的方法
let calculator = {num1: 5,num2: 3,// 加法方法add: function() {return this.num1 + this.num2;},// 减法方法subtract: function() {return this.num1 - this.num2;}
};console.log(calculator.add()); // 输出 8
console.log(calculator.subtract()); // 输出 2

通过运行以上代码示例,你可以深入理解函数和对象的相关概念,并掌握它们的使用方法和特性。

案例演示:

  1. 函数的定义与调用:
// 函数的定义
function sayHello() {console.log("Hello!");
}// 函数的调用
sayHello(); // 输出 "Hello!"

  1. 作用域与闭包:
// 全局变量
let globalVariable = "I'm global";function outerFunction() {let outerVariable = "I'm outer";function innerFunction() {let innerVariable = "I'm inner";console.log(globalVariable); // 访问全局变量console.log(outerVariable); // 访问外部函数变量console.log(innerVariable); // 访问当前函数变量}innerFunction();
}outerFunction();

  1. 对象的创建与属性的使用:
// 对象的创建
let person = {name: "John",age: 25,isStudent: true,address: {street: "123 Main St",city: "New York"}
};// 访问对象属性
console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 25
console.log(person.address.city); // 输出 "New York"

  1. 对象的方法的使用:
// 对象的方法
let calculator = {num1: 5,num2: 3,// 加法方法add: function() {return this.num1 + this.num2;},// 减法方法subtract: function() {return this.num1 - this.num2;}
};console.log(calculator.add()); // 输出 8
console.log(calculator.subtract()); // 输出 2

通过运行以上代码示例,你可以深入理解函数和对象的相关概念,并掌握它们的使用方法和特性。

每一个都详细代码举例加上案例演示

  1. 数组的操作、遍历和排序:
// 数组的创建
let fruits = ["apple", "banana", "orange"];// 访问数组元素
console.log(fruits[0]); // 输出 "apple"
console.log(fruits[1]); // 输出 "banana"// 添加元素到数组末尾
fruits.push("grape");
console.log(fruits); // 输出 ["apple", "banana", "orange", "grape"]// 删除数组末尾的元素
fruits.pop();
console.log(fruits); // 输出 ["apple", "banana", "orange"]// 数组遍历
for (let i = 0; i < fruits.length; i++) {console.log(fruits[i]);
}// 数组排序
fruits.sort();
console.log(fruits); // 输出 ["apple", "banana", "orange"]

  1. 字符串的常用方法:
let str = "Hello, world!";// 计算字符串长度
console.log(str.length); // 输出 13// 字符串转换为大写
console.log(str.toUpperCase()); // 输出 "HELLO, WORLD!"// 字符串转换为小写
console.log(str.toLowerCase()); // 输出 "hello, world!"// 字符串查找子串
console.log(str.indexOf("world")); // 输出 7// 字符串替换子串
console.log(str.replace("world", "JavaScript")); // 输出 "Hello, JavaScript!"

以上代码演示了数组的基本操作和遍历,以及字符串的常用方法。通过运行这些例子,你可以更好地理解和应用数组和字符串的相关操作。

 案例演示:

函数的定义与调用、作用域、闭包等概念:

// 函数的定义与调用
function sayHello(name) {console.log("Hello, " + name + "!");
}sayHello("John"); // 输出 "Hello, John!"// 作用域
let x = 10; // 全局作用域function foo() {let x = 20; // 局部作用域console.log(x); // 输出 20
}foo();
console.log(x); // 输出 10// 闭包
function counter() {let count = 0;function increment() {count++;console.log(count);}return increment;
}let c = counter();
c(); // 输出 1
c(); // 输出 2

对象的创建、属性与方法的使用:

// 对象的创建和访问属性
let person = {name: "John",age: 30,city: "New York"
};console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 30// 对象的方法
let person = {name: "John",age: 30,city: "New York",sayHello: function() {console.log("Hello, my name is " + this.name + ".");}
};person.sayHello(); // 输出 "Hello, my name is John."

以上代码演示了函数的定义与调用、作用域、闭包以及对象的创建、属性与方法的使用。通过运行这些例子,你可以更好地理解和应用这些概念。

DOM操作:理解DOM的概念,学习如何通过JavaScript操作HTML元素。 

DOM操作是指通过JavaScript来操纵HTML文档中的元素。DOM(文档对象模型)是一种表示和操作HTML文档的标准,它将HTML文档中的每个元素都视为对象,并提供了一组方法和属性来操作这些对象。以下是一些常见的DOM操作示例,使用了最新的JavaScript语法:

  1. 获取元素:
// 通过id获取元素
const elementById = document.getElementById("myElement");// 通过类名获取元素(返回数组)
const elementsByClass = document.getElementsByClassName("myClass");// 通过标签名获取元素(返回数组)
const elementsByTag = document.getElementsByTagName("div");// 通过选择器获取元素
const elementBySelector = document.querySelector("#myElement .myClass");// 通过选择器获取多个元素(返回数组)
const elementsBySelectorAll = document.querySelectorAll(".myClass");

  1. 创建元素并添加到文档中:
const newElement = document.createElement("div");
newElement.textContent = "This is a new element";
document.body.appendChild(newElement);

  1. 修改元素的属性和样式:
// 修改元素的属性
element.setAttribute("class", "newClass");// 修改元素的样式
element.style.backgroundColor = "red";
element.style.fontSize = "20px";

  1. 添加事件处理程序:
// 添加点击事件处理程序
element.addEventListener("click", () => {console.log("Element clicked");
});// 添加事件委托处理程序
document.addEventListener("click", event => {if (event.target.matches(".myClass")) {console.log("Element with class 'myClass' clicked");}
});

  1. 修改元素的内容:
// 修改元素的文本内容
element.textContent = "New text content";// 修改元素的HTML内容
element.innerHTML = "<strong>New HTML content</strong>";

以上示例演示了如何使用最新的JavaScript语法进行DOM操作。请注意,这些示例只是最基本的操作,DOM还提供了更多的方法和属性,可以根据需求进行深入学习和探索。

案例说明:

好的,以下是对以上每个部分案例的具体说明:

  1. 获取元素:
  • 通过id获取元素:使用document.getElementById("myElement")方法来获取id为"myElement"的元素。
  • 通过类名获取元素:使用document.getElementsByClassName("myClass")方法来获取类名为"myClass"的所有元素。
  • 通过标签名获取元素:使用document.getElementsByTagName("div")方法来获取所有的div元素。
  • 通过选择器获取元素:使用document.querySelector("#myElement .myClass")方法来获取选择器为"#myElement .myClass"的元素。
  • 通过选择器获取多个元素:使用document.querySelectorAll(".myClass")方法来获取所有选择器为".myClass"的元素。
  1. 创建元素并添加到文档中:首先使用document.createElement("div")方法创建一个新的div元素,然后使用newElement.textContent属性设置元素的内容,最后使用document.body.appendChild(newElement)将新元素添加到文档的body中。

  2. 修改元素的属性和样式:

  • 修改元素的属性:使用element.setAttribute("class", "newClass")方法将元素的class属性修改为"newClass"。
  • 修改元素的样式:使用element.style.property = value的方式修改元素的样式,例如element.style.backgroundColor = "red"将元素的背景颜色修改为红色,element.style.fontSize = "20px"将元素的字体大小修改为20像素。
  1. 添加事件处理程序:
  • 添加点击事件处理程序:使用element.addEventListener("click", () => {...})方法为元素添加一个点击事件处理程序。
  • 添加事件委托处理程序:使用document.addEventListener("click", event => {...})方法来监听整个文档的点击事件,并通过event.target来判断具体点击的元素是否符合条件。
  1. 修改元素的内容:
  • 修改元素的文本内容:使用element.textContent = "New text content"将元素的纯文本内容修改为"New text content"。
  • 修改元素的HTML内容:使用element.innerHTML = "&lt;strong>New HTML content&lt;/strong>"将元素的HTML内容修改为"<strong>New HTML content</strong>"。

以上案例说明了如何使用最新的JavaScript语法进行DOM操作,具体展示了如何获取元素、创建元素、修改属性和样式、添加事件处理程序以及修改元素的内容。这些操作是在实际开发中常见的DOM操纵操作。

 事件处理:学习如何使用事件监听器和事件处理函数来实现交互功能。

好的,以下是一个使用事件监听器和事件处理函数的示例代码,并加上详细的注释说明:

// 获取按钮元素
const button = document.getElementById("myButton");// 定义点击事件处理函数
function handleClick(event) {// 阻止按钮默认的点击行为event.preventDefault();// 在控制台打印点击事件信息console.log("Button clicked");// 修改按钮的文本内容button.textContent = "Clicked!";// 修改按钮的样式button.style.backgroundColor = "red";
}// 添加点击事件监听器,当按钮被点击时调用 handleClick 函数
button.addEventListener("click", handleClick);

在上述代码中:

  • 首先通过document.getElementById()方法获取id为"myButton"的按钮元素。
  • 然后定义了一个名为handleClick的函数,它接受一个事件对象作为参数,用于处理点击事件。
  • handleClick函数中,使用event.preventDefault()方法阻止按钮的默认点击行为,以避免页面刷新。
  • 接着,在控制台打印了"Button clicked"的信息。
  • 然后修改了按钮的文本内容为"Clicked!"。
  • 最后修改了按钮的背景颜色为红色。
  • 最后,通过addEventListener()方法为按钮添加了一个点击事件监听器,当按钮被点击时,将调用handleClick函数。

这个示例展示了如何使用事件监听器和事件处理函数来实现交互功能。当按钮被点击时,会执行指定的函数,我们可以在函数中编写自己的逻辑代码,实现各种交互效果。

 异步编程:掌握异步编程的概念,学习使用回调函数、Promise和async/await处理异步任务。

异步编程是一种处理可能发生延迟或需要等待结果的操作的编程方式。在JavaScript中,常见的异步编程模式包括回调函数、Promise和async/await。

  1. 回调函数:回调函数是一种常见的用于处理异步操作的方式。它是一个作为参数传递给异步函数的函数,当异步操作完成时,会调用这个回调函数。
// 异步函数示例
function fetchData(url, callback) {// 模拟异步操作setTimeout(() => {const data = "Some data";// 将结果传递给回调函数callback(data);}, 2000);
}// 调用异步函数,并传入回调函数处理结果
fetchData("https://example.com/api/data", (data) => {console.log(data);
});

  1. Promise:Promise是ES6引入的一个处理异步操作的对象。它表示一个异步操作的最终完成或失败,并可获取结果。
// 异步函数示例
function fetchData(url) {return new Promise((resolve, reject) => {// 模拟异步操作setTimeout(() => {const data = "Some data";// 成功时调用 resolve,并传递结果resolve(data);// 或者失败时调用 reject,并传递错误信息// reject(new Error("Failed to fetch data"));}, 2000);});
}// 调用异步函数,并处理结果
fetchData("https://example.com/api/data").then((data) => {console.log(data);}).catch((error) => {console.log(error);});

  1. async/await:async/await是使用Promise进行异步编程的一种更简洁的语法。async函数返回一个Promise对象,并允许使用await关键字来等待异步操作完成。
// 异步函数示例
async function fetchData(url) {return new Promise((resolve, reject) => {// 模拟异步操作setTimeout(() => {const data = "Some data";// 成功时调用 resolve,并传递结果resolve(data);// 或者失败时调用 reject,并传递错误信息// reject(new Error("Failed to fetch data"));}, 2000);});
}// 使用 async/await 语法调用异步函数,并处理结果
async function handleData() {try {const data = await fetchData("https://example.com/api/data");console.log(data);} catch (error) {console.log(error);}
}// 调用处理函数
handleData();

这些是在ES6中使用最新语法处理异步编程的示例。它们提供了不同的方式来处理异步操作,使代码更具可读性和可维护性。您可以根据具体的应用场景选择适合的异步编程模式。

 错误处理和调试:了解常见的JavaScript错误类型和调试技巧。

在JavaScript中,常见的错误类型包括语法错误、运行时错误和逻辑错误。了解这些错误类型以及如何调试可以帮助我们更好地处理错误。

  1. 语法错误:这是由于代码中存在语法错误而导致的错误。例如,拼写错误、缺少括号或分号等。

    // 示例:语法错误
    if (true {console.log("Hello, World!");
    }
    // SyntaxError: Unexpected token '{'
    

    调试提示:在开发者工具的"控制台"中可以看到具体的语法错误信息,可以检查代码并修复错误。

  2. 运行时错误:这是在代码执行期间发生的错误。它可以是由于类型错误、变量未定义、越界访问等引起的。

    // 示例:运行时错误
    const num = 10;
    console.log(num.toUpperCase());
    // TypeError: num.toUpperCase is not a function
    

    调试提示:可以使用console.log()语句在代码的不同位置输出变量的值,以便确定错误发生的位置。还可以使用try-catch语句来捕获错误并采取适当的处理措施。

  3. 逻辑错误:这是由于代码的逻辑错误而导致的错误。代码可能按照逻辑执行,但结果不符合预期。

    // 示例:逻辑错误
    function calculateTotal(num1, num2) {return num1 + num2;
    }const total = calculateTotal(10, 20);
    console.log(total); // 1020,而不是30
    

    调试提示:可以使用console.log()语句来输出变量的值,以确保代码按照预期执行。还可以使用断点调试工具,如浏览器的开发者工具,在代码的特定位置设置断点以逐行调试代码。

除了调试技巧之外,还可以使用一些工具来帮助捕获和处理错误,例如:

  • 使用try-catch语句来捕获错误并采取适当的处理措施。
  • 使用开发者工具的"控制台"来查看错误信息和警告。
  • 使用console.log()语句在代码的不同位置输出变量的值以进行调试。
  • 使用断点调试工具(如浏览器的开发者工具)来逐行调试代码。
  • 使用lint工具(如ESLint)来静态分析代码并捕获潜在错误。

通过了解常见的JavaScript错误类型和调试技巧,我们可以更好地处理错误并改进代码的质量。

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

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

相关文章

C++ Qt开发:Charts折线图绘制详解

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍QCharts折线图的常用方法及灵活运用。 折线图…

C++ map和vector向量使用方法

C map用法 C 中 map 提供的是一种键值对容器&#xff0c;里面的数据都是成对出现的,如下图&#xff1a;每一对中的第一个值称之为关键字(key)&#xff0c;每个关键字只能在 map 中出现一次&#xff1b;第二个称之为该关键字的对应值。 map的使用 需要导入头文件 #include …

采用线性插值的方法 在n个坐标点的基础上 准备添加一个坐标点p 根据给出p的横坐标 计算出p的纵坐标 np.interp()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 采用线性插值的方法 在n个坐标点的基础上 准备添加一个坐标点p 根据给出p的横坐标 计算出p的纵坐标 np.interp() [太阳]选择题 下列选项正确的是&#xff1a; import numpy as np x np.arra…

[架构之路-264]:个性特征 - 到底什么才是工程师文化?

目录 前言&#xff1a; 一、三种类型的商业公司与生存法则 &#xff08;1&#xff09;运营或销售驱动型公司 &#xff08;2&#xff09;产品驱动型公司 &#xff08;3&#xff09;技术驱动型公司 二、工程师文化特征解读1 三、工程师文化特征解读2 &#xff08;1&#…

解决Unity物体速度过快无法进行碰撞检测(碰撞检测穿透)

解决Unity物体速度过快无法进行碰撞检测&#xff08;碰撞检测穿透&#xff09; 一、解决碰撞检测穿透方法一Collision Detection碰撞检测总结&#xff1a; 二、解决碰撞检测穿透方法二 一、解决碰撞检测穿透方法一 首先我们知道只要是跟碰撞相关的基本都是离不开刚体 Rigidbod…

八大排序算法@直接插入排序(C语言版本)

目录 直接插入排序概念算法思想代码实现核心算法&#xff1a;直接插入排序的算法实现&#xff1a; 特性总结 直接插入排序 概念 算法思想 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新…

「C/C++ 01」 深拷贝和浅拷贝

目录 一、概念 1. 浅拷贝 2. 深拷贝 3. 深浅拷贝问题 4. 总结 二、在C的类中实现深拷贝 1. 拷贝构造函数 中实现深拷贝 a. 自己开辟一个新空间&#xff0c;然后将内容拷贝到新空间 b. 借助构造函数来实现深拷贝 2. operator 中实现深拷贝 a. 自己开辟一个新空间&#xff0c;…

One Wire协议应用篇(c语言板)

一.项目简介 利用DS18B20实时检测温度并显示在LCD1602显示屏上&#xff0c;同时可以通过K1,K2,K3,K4设置最高温度和最低温度利用AT24C02可以实现掉电不丢失&#xff0c;最后当检测温度大于或小于最高温时&#xff0c;会在LCD1602显示屏上显示OV:H或OV:L。 二.准备材料 AT89C52、…

ESP32+LVGL笔记(6)-把712k的一二级汉字字库放在SPIRAM

文章目录 1.字库制作2.字库烧录到ESP32-S3的flash2.1 配置好分区文件2.2 汉字库文件烧录到ESP32的flash 3.将字库从 flash 拷贝到 SPIRAM3.1 工程配置中有关 SPIRAM 部分3.2 将汉字库从flash拷贝到SPIRAM的代码3.3 在进入lvgl之前调用函数 copyHZK_from_flash_to_SPIRAM 在前面…

Python入门知识点分享——(八)文件的open方法

学完了Python当中的数据类型&#xff0c;下一步我们来了解如何用Python语言打开文件并添加内容。 目录 file mode buffering encoding errors newline closefd opener 函数 打开文件需要用到open函数&#xff0c;完整的语法格式如下所示&#xff0c;为了演示方便&…

【Linux系统基础】(1)Linux基础命令全面详解

在计算机世界中&#xff0c;Linux操作系统以其稳定性、安全性和开源性而受到广大程序员和系统管理员的喜爱。然而&#xff0c;对于初学者来说&#xff0c;Linux的命令行界面可能会显得有些复杂和难以理解。本文将详细介绍一些常用的Linux基础命令&#xff0c;帮助你更好地理解和…

TLC2543(12位A/D转换器)实现将输入的模拟电压显示到数码管上

代码&#xff1a; #include <reg51.h> #define uchar unsigned char #define uint unsigned int// 数码管0-9 unsigned char seg[] {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; sbit SDO P1^0; sbit SDI P1^1; sbit CS P1^2; sbit CLK P1^3; s…

【C语言】打印内存数据

C语言&#xff0c;用函数封装&#xff1a;16进制打印unsigned char *p指向的内存&#xff0c;长度为int l。16个字节&#xff0c;换一次行。16个字节用一个字符串缓存&#xff0c;一次打印。 以下是一个使用函数封装的C语言代码&#xff0c;用于以16进制格式打印unsigned char …

MyBatis——MyBatis的延迟加载

MyBatis的延迟加载&#xff08;一对多查询案例&#xff09; 1.什么是延迟加载&#xff1f; 开启延迟加载后&#xff0c;在真正使用数据的时候才发起级联查询&#xff0c;不用的时候不查询。 2.pojo User类&#xff1a; package com.wt.pojo;import java.io.Serializable; …

计算机毕业设计------JSP教务处学生成绩管理系统

项目介绍 本项目包含管理员、教师、学生三种角色&#xff1b; 用户角色包含以下功能&#xff1a; 修改密码,查看自己的信息,查看自己的成绩,登录界面等功能。 管理员角色包含以下功能&#xff1a; 修改示例,增删改查学生信息,增删改查教师信息,增删改查课程信息,管理员修改…

电机控制 相关基础概念

基本概念: 定子或者转子上有铁心或者绕铜线的地方,绕铜线的地方叫槽,而将槽分开的叫齿,将所有的齿连起来的部位较轭部。 磁感应强度与磁场强度之间的关系可以通过以下公式表示: B=μH 其中,B 是磁感应强度,H 是磁场强度,μ 是磁导率。这个关系表明,在给定磁场强度下…

Golang 通用代码生成器仙童发布 2.4.0 电音仙女尝鲜版一及其介绍两个模式的视频

Golang 通用代码生成器仙童发布 2.4.0 电音仙女尝鲜版一及其介绍两个模式的视频 Golang 通用代码生成器仙童已发布 2.4.0 电音仙女尝鲜版一及其介绍视频。视频请见&#xff1a; 正常模式&#xff1a; https://www.bilibili.com/video/BV1fw411V77i/ 哑数据模式&#xff1a;…

@z-utils组 重构和自动化实现

highlight: monokai theme: github 包简介 z-utils组 是一个可以在vue/react/pure js 中使用的工具包&#xff0c;它包含三个子类&#xff0c;分别为 z-utils/base, z-utils/react, z-utils/vue 三个分别在不同区域使用。 他是原 zzy-javascript-devtools 的重构版本&#xf…

嵌入式系统复习--Thumb指令集

文章目录 上一篇Thumb指令集概述Thumb指令详细介绍数据处理指令数据存储指令转移指令异常中断指令 下一篇 上一篇 嵌入式系统复习–ARM指令集(二) Thumb指令集概述 在编写Thumb指令时&#xff0c;先要用伪指令CODE16声明&#xff08;ADS的编译环境下&#xff09;&#xff0c…

程序设计的思想

程序设计思想是指在程序设计过程中所采用的一种思维方式&#xff0c;它是程序设计的灵魂和基础。程序设计思想的正确与否直接关系到程序的质量和可维护性。在实际的程序设计中&#xff0c;我们需要遵循一定的程序设计思想&#xff0c;以确保程序的正确性、可读性和可维护性。 …