前端——JavaScript

news2024/11/18 15:35:38

目录

文章目录

前言

一. JavaScript基础

1.JavaScript基本结构

2. JavaScript 执行过程

3. JavaScript 引入方式

二.  JavaScript 语法

1.数据类型

2.变量

2.1 var 关键字定义变量

2.2  let 关键字定义变量

 2.3 var 与 let 的区别

3.字符串

3.1定义字符串

3.2 字符串常用方法

4.数组

4.1 创建数组

 4.2数组元素赋值

4.3 数组常用方法

 5.对象

 三.运算符

 四.流程控制语句

1.if语句

2. switch 语句

3. 循环语句

 五.函数

1.系统函数

1.1窗体函数

1.2 数字相关函数

1.3Math 类函数

 2.自定义函数

3.元素事件与函数

六.BOM

1.BOM概念

2. window对象

2.1history 对象

 2.2 location 对象

2.3 document 对象

 七.Date类

 八.周期函数和延迟函数

 九.DOM

1.DOM概念

2.DOM 节点关系

 3.节点属性

4. 元素属性

5. 节点操作

 6.节点样式

6.1style 样式

6.2 class 样式

7. 节点属性

十. Promise 对象

1.Promise 简介

2. Promise 应用

 十一.箭头函数

总结


文章目录

  • 前言
  • 一.JavaScript基础
  • 二.JavaScript语法
  • 三.运算符
  • 四.流程控制语句
  • 五.函数
  • 六.BOM
  • 七.Date类
  • 八.周期函数和延迟函数
  • 九.DOM
  • 十.Promise函数
  • 十一.箭头函数
  • 总结


前言

JavaScript 是一种解释性脚本语言(不用编译),主要用于向 HTML 添加交互行为,语法与 Java语言类似。
JavaScript 由 ECMAScript(简称 ES)、DOM和 BOM 三大部分组成。


一. JavaScript基础

1.JavaScript基本结构

<script type="text/javascript">
    //JavaScript 代码
</script>

 该结构可以在HTML中的任意位置书写,但必须保证 JavaScript 脚本中使用到的元素必须在 JavaScript脚本执行前完成加载。

2. JavaScript 执行过程

用户从浏览器发出页面请求,服务器接收请求并进行处理,处理完成后会将页面返回至浏览器,浏览器开始解释执行该页面,如果页面中包含有 JavaScript 脚本,那么浏览器会再次向服务器发出JavaScript脚本获取请求,服务器接收请求并进行处理,处理完成后会将 JavaScript 脚本返回至浏览器,浏览器开始解释执行JavaScript 脚本。

3. JavaScript 引入方式

JavaScript 的引入方式与 CSS 样式引入方式是一致的,分为行内脚本、内部脚本和外部脚本。

行内脚本

<input type="button" value="点击" onclick="alert('你点击了按钮');">

 内部脚本

<input type="button" value="点击" id="btn">
<script type="text/javascript">
    document.getElementById("btn").onclick=function(){
        alert('你点击了按钮');
 }
</script>

 外部脚本

// demo.js
document.getElementById("btn").onclick=function(){
  alert('你点击了按钮');
}
<!-- demo.html -->
<input type="button" value="点击" id="btn">
<script type="text/javascript" src="demo.js"></script>

二.  JavaScript 语法

1.数据类型

2.变量

2.1 var 关键字定义变量

JavaScript 是一种弱类型语言(没有类型之分),因此,在定义的变量的时候统一使用var关键字来定义。在JavaScript中,变量也是严格区分大小写的

var msg = 20; //赋值数字
msg = "字符串"; //赋值字符串
msg = true; //赋值布尔值
msg = new Object(); //赋值对象
2.2  let 关键字定义变量
let name = "张三";
let number = 10;
 2.3 var 与 let 的区别
{
  let innerLet = "代码块内定义的let变量";
  var innerVar = "代码块内定义的var变量";
}
console.log(innerVar);
console.log(innerLet);

 

由此可以得出:let 声明的变量只在它所在的代码块有效。var 声明的变量属于全局变量

3.字符串

3.1定义字符串

在JavaScript 中,凡事使用单引号或者双引号引起来的内容都属于字符串。

let name = "张三"; //双引号表示的字符串
let sex = '男'; //单引号表示的字符串
3.2 字符串常用方法

let str = "这是一个字符串";
console.log(str.length);//打印字符串的长度
let c = str.charAt(1); //获取下标为1的字符,在JS中没有字符,因此结果是一个字符串
console.log(c);
let index = str.indexOf("个");//获取字符串中第一次出现"个"的下标
console.log(index);
let sub = str.substring(3, 6);; //获取字符串中位于区间[3, 6)之间的字符串
console.log(sub);
let arr = str.split(""); //将字符串按照空白字符串进行分割,分割结果为字符串数组
console.log(arr);
let replaceStr = str.replace("一个", "");//将字符串中的"一个"使用空白字符串替换
console.log(replaceStr);

 

4.数组

4.1 创建数组
let 数组名 = new Array(数组长度);
let 数组名 = new Array(数组元素1, 数组元素2, ..., 数组元素n);
let 数组名 = [数组元素1, 数组元素2, ..., 数组元素n];

 示例:

let numbers = new Array(10);//创建了一个长度位10的数组
let names = new Array("张三","李四","王五");
let characters = ['A', 'B', 'C'];
 4.2数组元素赋值
let numbers = new Array(10);//创建了一个长度位10的数组
numbers[0] = 1; //通过下标为数组元素赋值
numbers[1] = 2;
numbers[0] = 3; //修改数组中的元素
4.3 数组常用方法

let num1= [1, 2, 3]
let length = num1.push(4, 5);//一次放入多个元素至数组中
console.log("数组长度:" + length);
let num2 = [6, 7, 8];
let num3 = num1.concat(num2);//将数组num2与num1进行在新数组中进行拼接,num2在num1之后
console.log("拼接后:" +num3);
num3.splice(2, 1); //将数组num3从下标为2的位置删除1个元素
console.log("删除元素后:" + num3);
num3.splice(3, 2, 10, 20, 30); //将数组num3从下标为3的位置删除2个元素,然后将10,20,30从删除位置添加到数组中
console.log("删除元素的同时增加元素:" + num3)
let str = num3.join(","); //将数组num3中所有元素使用","拼接起来
console.log(str);

 

 5.对象

let 对象名 = new Object(); //创建对象
对象名.属性名1 = 属性值1; //为对象添加属性
对象名.属性名2 = 属性值2;
...
对象名.属性名n = 属性值n;
let 对象名 = { //使用大括号创建对象
  属性名1: 属性值1, //属性名和属性值的关系使用冒号表示,多个属性之间使用逗号分割开
  属性名2: 属性值2,
    ...
  属性名n: 属性值n;
};

 示例:

let stu = new Object();
stu.name = "张三";
stu.sex = "男";
stu.age = 20;
console.log(stu);
let teacher = {
  name : '李刚',
  level: '教授',
  salary: 18000
};
console.log(teacher);

 

 三.运算符

示例:

let a = 1, b = 2;
console.log(a++);
console.log(a);
console.log(++a);
console.log(a);
a += b;
console.log(a);
//在Java中两个整数相除所得的结果一定是整数;但是在JavaScript中,
//两个整数相除,得到的结果可能是浮点数
let result = a / b;
console.log(result)
    console.log( a % b);
let c = "2";
console.log( b == c); //两个等号进行比较,只比较内容是否相同
console.log( b === c); //三个等号进行比较,比较内容是否相同的同时还要检查数据类型是否一致
console.log( b != c); //只有一个等号的不等于
console.log( b !== c);//有两个等号的不等于
let s1 = a > 1 && b === c; //逻辑与
let s2 = a > 1 || b === c; //逻辑或
let s3 = !a > 1 //逻辑非
    console.log(s1 + " " + s2 + " " + s3);

 四.流程控制语句

1.if语句

let a = 10;
if(typeof a === "number"){
  console.log("变量a是一个数字")
} else {
  console.log("变量a不是一个数字")
}

2. switch 语句

let a = 10;
switch (a % 3) {
  case 1:
    console.log("变量a与3求模的结果是1")
    break
  case 2:
    console.log("变量a与3求模的结果是2")
    break;
  default:
    console.log("变量a能够被3整除")
}

3. 循环语句

for(let i=0; i<10; i++){
  console.log(i);
}
let num = 0;
while (num++ < 10){
  console.log(num);
}
do{
  console.log(num--);
} while (num>=0)
  console.log("=====================")
let arr = [1, 2, 3, 4, 5];
for(let prop in arr){ //对于数组来说,使用for-in循环就是遍历数组的下标
  console.log(prop + "=>" + arr[prop])
}
console.log("=====================")
let stu = {
  name: '李四',
  sex: '男',
  age : 20,
  score: 86
};
for(let prop in  stu){//对于对象来说,使用for-in循环就是遍历对象的属性
  //对象的属性取值除了使用'.'操作符外,还可以使用中括号来取值
  console.log(prop + "=>" + stu[prop]);
}
console.log("=====================")
console.log(stu.name);
console.log(stu['name']);

 五.函数

1.系统函数

1.1窗体函数

// alert("这是提示信息");
//确认对话框会有一个返回值,该值表示用户是否进行了确认
// let result = confirm("确定要删除这些信息吗?");
// console.log(result);
//输入对话框有一个返回值,该值即为输入的信息;如果用户没有进行输入而进行确认,那么
//结果为空字符串;如果用户进行取消操作,那么结果为null
let input = prompt("请输入一个数字:");
console.log(input)
1.2 数字相关函数

//在JavaScript中,parseInt函数能够将以数字开头的任意字符串转换为整数
let a = parseInt("12a3");
console.log(a)
//在JavaScript中,parseFloat函数能够将以数字以及'.'号开头的任意字符串转换为浮点数
let b = parseFloat(".123a")
console.log(b)
let result = isNaN("123");
console.log(result)
1.3Math 类函数

console.log(Math.ceil(0.2));
console.log(Math.floor(0.99999));
console.log(Math.abs(-1))
//返回与给定数值最近的一个整数
console.log(Math.round(-2.6))
console.log(Math.random());

 2.自定义函数

function 函数名(参数1, 参数2, ... , 参数n){
  //JavaScript语句
  return 返回值; //需要返回值时使用return关键字返回;不需要时,不写return语句即可。
}
//函数调用
函数名(参数值1, 参数值2, ... , 参数值n);

 示例:

//int sum(int a, int b){
//  return a + b;
// }
//void show(){
// System.out.println("这是Java中的方法");
// }
function sum(a, b) {
  return a + b;
}
function show() {
  console.log("这是JavaScript中的方法")
}
show();
let result = sum(1, 2);
console.log(result);
/**
* 在JavaScript中,一个函数的返回值也可以是一个函数
* @param a
* @param b
* @param c
* @returns {function(*): number}
*/
function calculate(a, b, c) {
  let result = a * b;
  return function (d) {
    return result + c * d;
 }
}
//此时需要注意的是,calculate函数执行后得到的结果是一个函数,也就是说,在JavaScript中,
//变量可以存储一个函数,这种情况,我们把这个变量当作函数使用即可
let s = calculate(1, 2, 3);
let num = s(4); //再次调用函数,得到计算结果
console.log(num);
//闭包
let n = calculate(1, 2, 3)(4); //函数调用
console.log(n);

3.元素事件与函数

开启元素事件只需要在事件名前面加上“on”即可,关闭元素事件只需要在事件名前面加上“off”即可。

六.BOM

1.BOM概念

BOM(Browser Object Model),即浏览器对象模型,BOM 提供了独立于内容的对象结构,可以与浏览器窗口进行互动

2. window对象

window对象包含了3个对象:history、document和location。

2.1history 对象

history对象主要用于控制页面的历史记录的显示。

 2.2 location 对象

location对象主要用于获取以及更改浏览器地址栏信息。

<!--javascript:void(0)表示点击超链接时不做任何事情-->
<a href="javascript:void(0)" onclick="showAddress()">显示地址栏信息</a>
<a href="javascript:void(0)" onclick="refresh()">刷新页面</a>
<a href="javascript:void(0)" onclick="changePage()">替换新页面</a>
function showAddress() {
  console.log(location.host);
  console.log(location.hostname);
  console.log(location.href);
}
function refresh() {
  location.reload();
}
function changePage() {
  location.replace("page2.html");
}
2.3 document 对象

document对象主要用于操作页面元素

<body>
  <div id="a">a</div>
  <div id="b" class="c">b</div>
  <div class="c">c</div>
  <div name="d">d</div>
</body>
<script type="text/javascript">
  let div = document.getElementById("a"); //得到单个元素
  console.log(div)
  // div.innerText = "将内容改变为b"; //内部文本内容
  // div.innerHTML = "<h1>内容支持标签</h1>"; //内部HTML内容
  div.textContent = "<h1>文本内容</h1>"; //作用与innerText一样
  console.log("============================")
  //通过标签名获取元素
  let divArr = document.getElementsByTagName("div");
  console.log(divArr)
  console.log("============================")
  //通过类名获取元素
  let arr = document.getElementsByClassName("c");
  console.log(arr)
  console.log("============================")
  let nameArr = document.getElementsByName("d");
  console.log(nameArr)
</script>

 七.Date类

let now = new Date(); //创建一个日期对象,默认时间为系统当前时间
let year = now.getFullYear(); //获取年份
let month = now.getMonth() + 1; //获取月份,月份在0~11之间
let date = now.getDate(); //获取日期是当前月的第几天
let hour = now.getHours();//获取小时数
let minute = now.getMinutes(); //获取分钟数
let second = now.getSeconds(); //获取秒数
let time = year + "-" + zerofill(month, 2) + "-" + zerofill(date, 2) + " " +
zerofill(hour, 2) + ":" + zerofill(minute,2) + ":" + zerofill(second, 2);
console.log(time);
let weekday = now.getDay(); //获取当前日期是一周的第几天:一周的开始是周日,值为0
console.log(weekday);
now.setMonth(month);
now.setDate(0);
console.log(now.getDate());//需要注意的是:在取当前月最大天数时,需要将月份重新设置,日期设
置为0即可
function zerofill(num, targetLen) {
  let str = num + "";
  while (str.length < targetLen){
    str = "0" + str;
 }
  return str;
}

 八.周期函数和延迟函数

let count = 0;
function showTime() {
  let now = new Date(); //创建一个日期对象,默认时间为系统当前时间
  let year = now.getFullYear(); //获取年份
  let month = now.getMonth() + 1; //获取月份,月份在0~11之间
  let date = now.getDate(); //获取日期是当前月的第几天
  let hour = now.getHours();//获取小时数
  let minute = now.getMinutes(); //获取分钟数
  let second = now.getSeconds(); //获取秒数
  let time = year + "-" + zerofill(month, 2) + "-" + zerofill(date, 2) + " " +
zerofill(hour, 2) + ":" + zerofill(minute,2) + ":" + zerofill(second, 2);
  let div = document.getElementById("time");
  div.textContent = time;
  count++;
  //count为10的时候,周期函数需要停止
  // if(count == 10){
  //   clearInterval(t); //清理给定的周期函数
  // }
}
// setInterval(showTime, 1000);
// let t = setInterval('showTime()', 1000); //如果第一个参数传递的是一个字符串,该字符串
必须是函数的调用
let s = setTimeout(showTime, 3000); //在3秒后执行一次showTime函数
clearTimeout(s);
function zerofill(num, targetLen) {
  let str = num + "";
  while (str.length < targetLen){
    str = "0" + str;
 }
  return str;
}

 九.DOM

1.DOM概念

DOM,即文档对象模型,DOM主要提供了对于页面内容的一些操作。在DOM中,所有的内容(标签和文本)都是DOM节点,所有的标签都是DOM元素。

2.DOM 节点关系

 3.节点属性

 

let box = document.getElementById("box");
console.log(box.parentNode) //父节点
let childNodes = box.childNodes; //文本内容包括enter键在内的换行、注释都属于节点
console.log(childNodes)
console.log(box.firstChild) //第一个子节点
console.log(box.lastChild) //最后一个子节点
let first = childNodes[0]; //第一个子节点
console.log(first.nextSibling);
let last = box.lastChild; //最后一个子节点
console.log(last.previousSibling)

4. 元素属性

let box = document.getElementById("box");
// console.log(box.parentNode) //父节点
// let childNodes = box.childNodes; //文本内容包括enter键在内的换行、注释都属于节点
// console.log(childNodes)
// console.log(box.firstChild) //第一个子节点
// console.log(box.lastChild) //最后一个子节点
//
// let first = childNodes[0]; //第一个子节点
// console.log(first.nextSibling);
// let last = box.lastChild; //最后一个子节点
// console.log(last.previousSibling)
console.log(box.parentElement); //父元素,元素也就是标签
let children = box.children; //下一级子元素
console.log(children)
console.log(box.firstElementChild); //第一个子元素
console.log(box.lastElementChild); //最后一个子元素
console.log(box.firstElementChild.nextElementSibling);//第一个子元素的下一个同级元素
console.log(box.firstElementChild.previousElementSibling);//第一个子元素的上一个同级元素

5. 节点操作

<input type="button" value="查询" id="searchBtn">
  <table>
    <thead>
    <tr>
      <td>姓名</td>
      <td>性别</td>
      <td>年龄</td>
    </tr>
    </thead>
    <tbody id="dataBox">
    </tbody>
  </table>
</body>
<script type="text/javascript">
  let stus = [{
    name: '张三1',
    sex: '男',
    age: 20
 },{
    name: '张三2',
    sex: '男',
    age: 20
 },{
    name: '张三3',
    sex: '男',
    age: 20
 },{
    name: '张三4',
    sex: '男',
    age: 20
 }];
  let btn = document.getElementById("searchBtn");
  btn.onclick = function () {
    let dataBox = document.getElementById("dataBox");
    let table = dataBox.parentElement; //获取table标签元素
    dataBox.remove(); //将tbody从DOM树中移除
    dataBox = document.createElement("tbody"); //创建tr标签
    dataBox.setAttribute("id", "dataBox");
    table.appendChild(dataBox);
    for(let i=0; i<stus.length; i++){
      let tr = document.createElement("tr"); //创建tr标签
      let td = document.createElement("td"); //创建td标签
      td.textContent = stus[i].name;
      tr.appendChild(td); //将td追加到tr的末尾
      td = document.createElement("td"); //创建td标签
      td.textContent = stus[i].sex;
      tr.append(td);
      td = document.createElement("td"); //创建td标签
      td.textContent = stus[i].age;
      tr.append(td);
      dataBox.appendChild(tr);
   }
 }
</script>

 6.节点样式

6.1style 样式
// 节点.style.样式属性 = "值";
6.2 class 样式
// 节点.className = "样式名称";
示例:
<head>
  <meta charset="UTF-8">
  <title>节点样式</title>
  <style>
    .box{
      width: 200px;
      height: 200px;
      border: 1px solid #ddd;
   }
    .active{
      background-color: red;
   }
  </style>
</head>
<body>
  <div id="a"  class="box active"></div>
</body>
<script type="text/javascript">
  let div = document.getElementById("a");
  // div.style.height = '50px';
  // div.style.backgroundColor = "red";
  // div.className = "box";
  div.className = "box";
</script>

7. 节点属性

<head>
  <meta charset="UTF-8">
  <title>节点属性</title>
  <style>
    html,
    body{
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
      overflow: scroll; /*滚动条取值需要先设置此属性*/
   }
  </style>
</head>
<body id="body">
  <div style="height: 2000px;">
    <ul id="u">
      <li>测试</li>
    </ul>
  </div>
  <input type="button" value="按钮" id="btn">
</body>
<script type="text/javascript">
  let u = document.getElementById("u");
  console.log(u.offsetLeft)
  console.log(u.offsetTop)
  console.log(u.offsetHeight + " x " + u.offsetWidth);
  console.log(u.clientWidth + " x " + u.clientHeight);
  document.getElementById("btn").onclick = function () {
    let body = document.getElementById("body");
    console.log(body.scrollTop)
 }
</script>

十. Promise 对象

1.Promise 简介

Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息,其状态不受外界影响。Promise对象代表一个异步操作,有三种状态:
        pending: 初始状态,不是成功或失败状态。
        fulfilled: 意味着操作成功完成。
        rejected: 意味着操作失败。
只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是
Promise 这个名字的由来,它的英语意思就是承诺,表示其他手段无法改变。
一旦 Promise 对象从初始状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。

2. Promise 应用

let promise = new Promise(function(resolve, reject) {
  // 异步处理
  // 处理结束后、调用resolve 或 reject
});
promise.then(function(result){
  //result的值是上面调用resolve(...)方法传入的值.可以对该结果进行相应的处理
});
promise.catch(function(error){
  //error的值是上面调用reject(...)方法传入的值.可以对该结果进行相应的处理
});
//链式调用
let promise = new Promise(function(resolve, reject) {
  // 异步处理
  // 处理结束后、调用resolve 或 reject
}).then(function(result){
  //result的值是上面调用resolve(...)方法传入的值.可以对该结果进行相应的处理
}).catch(function(error){
  //error的值是上面调用reject(...)方法传入的值.可以对该结果进行相应的处理
});

 Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。

function calculate(a, b) {
  let promise = new Promise(function (resolve, reject) {
    if(b == 0){
      reject(new Error("除数不能为0"));
   } else {
      setTimeout(function () {
        resolve(a / b);
     }, 2000);
   }
 });
  promise.then(function (result) {
    console.log(result)
 });
  promise.catch(function (error) {
    console.log(error)
 })
}
calculate(2, 0);

 十一.箭头函数

箭头函数相当于Java和c++中的 lambda 表达式,传递的依然是实现过程。

function calculate(a, b) {
  let promise = new Promise((resolve, reject) => {
    if(b === 0){ //异常情况处理使用reject函数进行拒绝
      reject(new Error("除数不能为0"))
   } else { //成功处理的情况使用resolve函数进行处理
      resolve(a / b);
   }
 });
  //这里resp接收的值就是resolve函数的参数值
  promise.then(resp => {
    console.log("处理成功" + resp);
 });
  //这里error接收的值就是reject函数的参数值
  promise.catch( error => {
    console.log("处理失败"+ error)
 })
}
calculate(2, 0)

总结

前端就这些啦,大家可以多多去尝试去领会每个知识点的效果和用法!

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

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

相关文章

Python爬虫解析库安装

解析库的安装 抓取网页代码之后&#xff0c;下一步就是从网页中提取信息。提取信息的方式有多种多样&#xff0c;可以使用正则来提取&#xff0c;但是写起来相对比较烦琐。这里还有许多强大的解析库&#xff0c;如 lxml、Beautiful Soup、pyquery 等。此外&#xff0c;还提供了…

除了Adobe之外,还有什么方法可以将Excel转为PDF?

前言 Java是一种广泛使用的编程语言&#xff0c;它在企业级应用开发中发挥着重要作用。而在实际的开发过程中&#xff0c;我们常常需要处理各种数据格式转换的需求。今天小编为大家介绍下如何使用葡萄城公司的的Java API 组件GrapeCity Documents for Excel&#xff08;以下简…

数据结构(一)------顺序表

文章目录 前言一、什么是顺序表二、实现顺序表1.静态顺序表2.动态顺序表总结 前言 制作不易&#xff01;三连支持一下呗&#xff01;&#xff01;&#xff01; 从今天起我们将会进入数据结构的学习&#xff01; 我们先来了解 什么是数据结构 数据结构是计算机存储、组织数…

2023年算法OOA-CNN-BiLSTM-ATTENTION回归预测(matlab)

OOA-CNN-BiLSTM-Attention鲸鱼算法优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕…

go语言函数进阶

1.变量作用域 全局变量 全局变量是定义在函数外部的变量&#xff0c;它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。 package mainimport "fmt"//定义全局变量num var num int64 10func testGlobalVar() {fmt.Printf("num%d\n", num) /…

汽车网络安全dos, someip

汽车Cyber Security入门之DoS 攻防 - 知乎 3、SOME/IP-TP 近年来火热地谈论下一代EE架构和SOA的时候&#xff0c;总离不开SOME/IP这个进程间通讯协议。在许多应用场景中&#xff0c;需要通过UDP传输大型的SOME/IP有效载荷。鉴于在以太网上传输数据包的大小限制&#xff0c;SO…

多维时序 | Matlab实现DBO-BiLSTM蜣螂算法优化双向长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现DBO-BiLSTM蜣螂算法优化双向长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现DBO-BiLSTM蜣螂算法优化双向长短期记忆神经网络多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-BiLSTM多变量时间序…

Matlab|【完全复现】基于价值认同的需求侧电能共享分布式交易策略

目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》&#xff0c;针对电能共享市场的交易机制进行研究&#xff0c;提出了基于价值认同的需求侧电能共享分布式交易策略&#xff0c;旨在降低电力市…

面经基础版案例(路由,请求渲染,传参,组件缓存)

文章目录 1.案例效果分析2.配置一级路由&#xff08;首页&#xff0c;详情&#xff09;3.配置二级路由4.导航高亮效果5.首页的请求渲染6.传参&#xff08;查询参数 $ 动态路由&#xff09;7.详情页渲染8.组件缓存kepp-alive9.总结 1.案例效果分析 2.配置一级路由&#xff08;首…

实战 | OpenCV+OCR实现弧形文字识别实例(详细步骤 + 源码)

导 读 本文主要介绍基于OpenCV+OCR实现弧形文字识别实例,并给详细步骤和代码。源码在文末。 背景介绍 测试图如下,目标是正确识别图中的字符。图片来源: https://www.51halcon.com/forum.php?mod=viewthread&tid=6712 同样,论坛中已经给出了Halcon实现代码,…

web应用课——(第二讲:CSS)

目录 一、实战项目一&#xff1a;Acwing名片 二、实战项目二&#xff1a;Bilibili名片 三、样式定义方式 四、选择器 五、颜色 六、文本 七、字体 八、背景 九、边框 十、元素展示格式 十一、内边距与外边距 十二、盒子模型 十三、位置 十四、浮动 十五、flex布…

老代码为啥如此设计,我是如何解决编译失败的?

周末翻出三年前的杰作“jpy”&#xff0c;专为人工智能开发的dsl语言&#xff0c;不仅编译无法通过&#xff0c;而且一连串的疑问映入眼帘。这…这…这些文件/内容都是干啥的啊&#xff0c;为什么如此设计&#xff1f; 技术千万条&#xff0c;专研第一条&#xff0c;自嗨无笔记…

Lombok的详细教程

什么是lombok Lombok是一个Java库&#xff0c;它通过提供一组注释来简化Java类的开发。使用Lombok&#xff0c;开发人员可以通过在类或字段上添加注释来自动生成通用的方法&#xff0c;如getter、setter、equals、hashCode等。这样可以减少冗余的样板代码&#xff0c;提高开发效…

2024 年最佳 PDF 编辑器榜单:PDF 编辑的首选

您可能经常遇到或使用 PDF 文件 - 它们在现代跨平台世界中无处不在。大多数时候&#xff0c;在查看 PDF 时&#xff0c;您可以使用免费软件来阅读或评论这些文件。但如果您还需要编辑它们怎么办&#xff1f;这就是 PDF 编辑器的用武之地。 最好的 PDF 编辑器允许您编辑、创建、…

Bytebase 签约 Aptive,助力北美商住害虫控制服务领导者构建统一数据库操作平台

在数字化快速发展时代&#xff0c;有效的规范数据库管理对企业安全运营至关重要。近日&#xff0c;数据库 DevOps 团队协同管理工具 Bytebase 签约北美商住害虫控制服务的领导者 Aptive Environmental&#xff0c;旨在全面优化 Aptive Environmental 的数据库操作管理&#xff…

数据结构与算法教程,数据结构C语言版教程!(第六部分、数据结构树,树存储结构详解)四

第六部分、数据结构树&#xff0c;树存储结构详解 数据结构的树存储结构&#xff0c;常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中&#xff0c;最常用的还是二叉树&#xff0c;本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

第一节课,用户管理--后端初始化,项目调通。二次翻工

一、代码下载 网址&#xff1a; 用户管理第一节课&#xff0c;阿里生成代码包-CSDN博客 二、项目步骤&#xff0c;参考从 网址&#xff1a; 一、第一节课&#xff0c;用户管理--后端初始化&#xff0c;项目调通-CSDN博客 从这里开始跟随 &#xff08;一&#xff09;、跟随…

eclipse用gerrit提交失败

1.gerrit简介 Gerrit&#xff0c;一种免费、开放源代码的代码审查软件&#xff0c;使用网页界面。利用网页浏览器&#xff0c;同一个团队的软件程序员&#xff0c;可以相互审阅彼此修改后的程序代码&#xff0c;决定是否能够提交&#xff0c;退回或者继续修改。它使用Git作为底…

精通Python第13篇—数据之光:Pyecharts旭日图的魔法舞台

文章目录 引言准备工作绘制基本旭日图调整颜色和样式添加交互功能定制标签和标签格式嵌套层级数据高级样式与自定义进阶主题&#xff1a;动态旭日图数据源扩展&#xff1a;外部JSON文件总结 引言 数据可视化在现代编程中扮演着重要的角色&#xff0c;而Pyecharts是Python中一个…

【数据分析】Excel中使用VBA进行宏编程

目录 0 准备工作1 VBA简介1.1 Excel VBA应用程序的构成1.2 事件驱动1.3 宏1.3.1 创建宏1.3.2 宏安全 2 VBA基础2.1 注释2.2 数据类型2.2.1 基本数据类型2.2.2 枚举类型2.2.3 用户自定义数据类型 2.2 变量2.3 常量2.4 运算符2.5 程序结构2.6 过程2.7 函数 3 Excel应用程序开发流…