ECMAScript基础入门:从语法到应用_ecmascript学习-程序员宅基地

技术标签: 学习  基础详细  JavaScript  前端  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; // undefined
    
    console.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; // undefined

console.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错误类型和调试技巧,我们可以更好地处理错误并改进代码的质量。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_70007095/article/details/135172687

智能推荐

js-选项卡原理_选项卡js原理-程序员宅基地

文章浏览阅读90次。【代码】js-选项卡原理。_选项卡js原理

设计模式-原型模式(Prototype)-程序员宅基地

文章浏览阅读67次。原型模式是一种对象创建型模式,它采用复制原型对象的方法来创建对象的实例。它创建的实例,具有与原型一样的数据结构和值分为深度克隆和浅度克隆。浅度克隆:克隆对象的值类型(基本数据类型),克隆引用类型的地址;深度克隆:克隆对象的值类型,引用类型的对象也复制一份副本。UML图:具体代码:浅度复制:import java.util.List;/*..._prototype 设计模式

个性化政府云的探索-程序员宅基地

文章浏览阅读59次。入选国内首批云计算服务创新发展试点城市的北京、上海、深圳、杭州和无锡起到了很好的示范作用,不仅促进了当地产业的升级换代,而且为国内其他城市发展云计算产业提供了很好的借鉴。据了解,目前国内至少有20个城市确定将云计算作为重点发展的产业。这势必会形成新一轮的云计算基础设施建设的**。由于云计算基础设施建设具有投资规模大,运维成本高,投资回收周期长,地域辐射性强等诸多特点,各地在建...

STM32问题集之BOOT0和BOOT1的作用_stm32boot0和boot1作用-程序员宅基地

文章浏览阅读9.4k次,点赞2次,收藏20次。一、功能及目的 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序。BOOT1=x BOOT0=0 // 从用户闪存启动,这是正常的工作模式。BOOT1=0 BOOT0=1 // 从系统存储器启动,这种模式启动的程序_stm32boot0和boot1作用

C语言函数递归调用-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏22次。C语言函数递归调用_c语言函数递归调用

明日方舟抽卡模拟器wiki_明日方舟bilibili服-明日方舟bilibili服下载-程序员宅基地

文章浏览阅读410次。明日方舟bilibili服是一款天灾驾到战斗热血的创新二次元废土风塔防手游,精妙的二次元纸片人设计,为宅友们源源不断更新超多的纸片人老婆老公们,玩家将扮演废土正义一方“罗德岛”中的指挥官,与你身边的感染者们并肩作战。与同类塔防手游与众不同的几点,首先你可以在这抽卡轻松获得稀有,同时也可以在战斗体系和敌军走位机制看到不同。明日方舟bilibili服设定:1、起因不明并四处肆虐的天灾,席卷过的土地上出..._明日方舟抽卡模拟器

随便推点

Maven上传Jar到私服报错:ReasonPhrase: Repository version policy: SNAPSHOT does not allow version: xxx_repository version policy snapshot does not all-程序员宅基地

文章浏览阅读437次。Maven上传Jar到私服报错:ReasonPhrase: Repository version policy: SNAPSHOT does not allow version: xxx_repository version policy snapshot does not all

斐波那契数列、素数、质数和猴子吃桃问题_斐波那契日-程序员宅基地

文章浏览阅读1.2k次。斐波那契数列(Fibonacci Sequence)是由如下形式的一系列数字组成的:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …上述数字序列中反映出来的规律,就是下一个数字是该数字前面两个紧邻数字的和,具体如下所示:示例:比如上述斐波那契数列中的最后两个数,可以推导出34后面的数为21+34=55下面是一个更长一些的斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,_斐波那契日

PHP必会面试题_//该层循环用来控制每轮 冒出一个数 需要比较的次数-程序员宅基地

文章浏览阅读363次。PHP必会面试题1. 基础篇1. 用 PHP 打印出前一天的时间格式是 2017-12-28 22:21:21? //&gt;&gt;1.当前时间减去一天的时间,然后再格式化echo date('Y-m-d H:i:s',time()-3600*24);//&gt;&gt;2.使用strtotime,可以将任何字符串时间转换成时间戳,仅针对英文echo date('Y-m-d H:i:s',str..._//该层循环用来控制每轮 冒出一个数 需要比较的次数

windows用mingw(g++)编译opencv,opencv_contrib,并install安装_opencv mingw contrib-程序员宅基地

文章浏览阅读1.3k次,点赞26次,收藏26次。windows下用mingw编译opencv貌似不支持cuda,选cuda会报错,我无法解决,所以没选cuda,下面两种编译方式支持。打开cmake gui程序,在下面两个框中分别输入opencv的源文件和编译目录,build-mingw为你创建的目录,可自定义命名。1、如果已经安装Qt,则Qt自带mingw编译器,从Qt安装目录找到编译器所在目录即可。1、如果已经安装Qt,则Qt自带cmake,从Qt安装目录找到cmake所在目录即可。2、若未安装Qt,则安装Mingw即可,参考我的另外一篇文章。_opencv mingw contrib

5个高质量简历模板网站,免费、免费、免费_hoso模板官网-程序员宅基地

文章浏览阅读10w+次,点赞42次,收藏309次。今天给大家推荐5个好用且免费的简历模板网站,简洁美观,非常值得收藏!1、菜鸟图库https://www.sucai999.com/search/word/0_242_0.html?v=NTYxMjky网站主要以设计类素材为主,办公类素材也很多,简历模板大部个偏简约风,各种版式都有,而且经常会更新。最重要的是全部都能免费下载。2、个人简历网https://www.gerenjianli.com/moban/这是一个专门提供简历模板的网站,里面有超多模板个类,找起来非常方便,风格也很多样,无须注册就能免费下载,_hoso模板官网

通过 TikTok 联盟提高销售额的 6 个步骤_tiktok联盟-程序员宅基地

文章浏览阅读142次。你听说过吗?该计划可让您以推广您的产品并在成功销售时支付佣金。它提供了新的营销渠道,使您的产品呈现在更广泛的受众面前并提高品牌知名度。此外,TikTok Shop联盟可以是一种经济高效的产品或服务营销方式。您只需在有人购买时付费,因此不存在在无效广告上浪费金钱的风险。这些诱人的好处是否足以让您想要开始您的TikTok Shop联盟活动?如果是这样,本指南适合您。_tiktok联盟