【前端知识】es6基础语法介绍

ES6基础语法介绍

    • 概述
      • 1. 变量声明:let 和 const
      • 2. 模板字符串
      • 3. 解构赋值
      • 4. 箭头函数
      • 5. 默认参数值
      • 6. 类(Classes)
      • 7. 模块
      • 8. 扩展运算符(Spread Operator)
      • 9. 对象字面量增强
      • 10. 符号(Symbols)
      • 11. 迭代器(Iterators)和生成器(Generators)
      • 12. 承诺(Promises)
    • 基本数据类型
      • 1. 字符串(String)
      • 2. 数字(Number)
      • 3. 布尔值(Boolean)
      • 4. 未定义(Undefined)
      • 5. 空值(Null)
      • 6. 符号(Symbol)
      • 7. 对象(Object)
      • 8. 数组(Array)
      • 9. 函数(Function)
      • 10. 整数(BigInt)
    • 对象属性迭代
      • 对象属性迭代
        • 1. `for...in` 循环
        • 2. `Object.keys()`
        • 3. `Object.values()`
        • 4. `Object.entries()`
        • 5. `Reflect.ownKeys()`
        • 6. 使用 `Symbol` 属性
        • 7. 使用 `for...of` 循环和 `Map` 迭代器
    • 数组迭代
      • 1. `for` 循环
      • 2. `for...of` 循环
      • 3. `forEach` 方法
      • 4. `map` 方法
      • 5. `filter` 方法
      • 6. `reduce` 方法
      • 7. `some` 方法
      • 8. `every` 方法
      • 9. `find` 方法
      • 10. `findIndex` 方法
      • 11. `keys` 方法
      • 12. `values` 方法
      • 13. `entries` 方法
      • this指代
      • 全局上下文
      • 函数调用
      • 对象方法
      • 构造函数
      • 箭头函数
      • `bind`、`call`、`apply` 方法
      • DOM 事件处理
      • 类方法
    • 箭头函数和常规函数在this上有何不同?
      • 常规函数(函数表达式和函数声明)
      • 箭头函数
      • 总结

概述

ECMAScript 6(简称 ES6)是 JavaScript 语言的一个重要版本,它引入了许多新的语法和特性,使得 JavaScript 更加强大和易于使用。以下是一些基础的 ES6 语法及其详细说明:

1. 变量声明:let 和 const

  • let:用于声明一个块作用域的局部变量,并且可以选择性地进行初始化。

    let message = "Hello, ES6!";
    let count;
    
  • const:用于声明一个块作用域的常量,必须在声明时进行初始化,且声明后不能被重新赋值。

    const pi = 3.14159;
    

2. 模板字符串

模板字符串使用反引号(`)定义,允许嵌入表达式,并且可以进行多行定义。

let name = "Kimi";
let greeting = `Hello, ${name}!`;
console.log(greeting); // 输出:Hello, Kimi!let multiLine = `This is amulti-line string.
`;

3. 解构赋值

解构赋值允许你从数组或对象中提取数据,并赋值给新的变量。

  • 数组解构

    let scores = [80, 90, 70];
    let [score1, score2, score3] = scores;
    
  • 对象解构

    let person = { name: "Alice", age: 25 };
    let { name, age } = person;
    

4. 箭头函数

箭头函数提供了一种更简洁的方式来写函数表达式。

let add = (a, b) => a + b;

如果函数体只有一条语句,可以省略 return 关键字和花括号。

let multiply = (a, b) => a * b;

5. 默认参数值

函数参数可以设置默认值,当函数被调用时没有提供该参数,则使用默认值。

function greet(name = "Guest") {console.log(`Hello, ${name}!`);
}

6. 类(Classes)

ES6 引入了 class 语法,使得定义类和基于类的继承更加直观和简洁。

class Rectangle {constructor(width, height) {this.width = width;this.height = height;}get area() {return this.width * this.height;}set width(value) {if (value > 0) this._width = value;}set height(value) {if (value > 0) this._height = value;}
}

7. 模块

ES6 引入了模块功能,允许你创建可复用的代码块,每个模块都有自己的作用域。

// math.js
export function add(a, b) {return a + b;
}// app.js
import { add } from './math.js';
console.log(add(2, 3)); // 输出:5

8. 扩展运算符(Spread Operator)

扩展运算符 ... 允许一个表达式被展开在需要多个参数(函数调用)或多个元素(数组字面量)或多个键值对(对象字面量)的地方。

  • 函数调用

    function sum(x, y, z) {return x + y + z;
    }
    let numbers = [1, 2, 3];
    console.log(sum(...numbers)); // 输出:6
    
  • 数组字面量

    let parts = ['shoulders', 'knees'];
    let lyrics = ['head', ...parts, 'and', 'toes'];
    
  • 对象字面量

    let obj1 = { foo: 'bar', x: 42 };
    let obj2 = { foo: 'baz', y: 13 };
    let clonedObj = { ...obj1 };
    let mergedObj = { ...obj1, ...obj2 };
    

9. 对象字面量增强

ES6 增强了对象字面量的语法,允许在字面量中直接定义方法、使用属性值简写等。

let obj = {name: "Alice",getName() {return this.name;}
};

10. 符号(Symbols)

符号是一种新的基本数据类型,它是不可变的,可以用作对象的属性。

let mySymbol = Symbol('mySymbol');
let obj = {[mySymbol]: 'Hello'
};
console.log(obj[mySymbol]); // 输出:Hello

11. 迭代器(Iterators)和生成器(Generators)

迭代器允许你定义对象的遍历接口,而生成器则是一种更简洁的迭代器实现方式。

function* idGenerator() {let id = 1;while (true) {yield id;id++;}
}let gen = idGenerator();
console.log(gen.next().value); // 输出:1
console.log(gen.next().value); // 输出:2

12. 承诺(Promises)

承诺是异步编程的一种解决方案,它代表了异步操作的最终完成(或失败)及其结果值。

let promise = new Promise((resolve, reject) => {setTimeout(() => {resolve('Success!');}, 1000);
});promise.then((value) => {console.log(value); // 输出:Success!
}).catch((error) => {console.error(error);
});

这些特性构成了 ES6 的基础,它们极大地丰富了 JavaScript 的功能,并使得代码更加简洁和易于维护。

基本数据类型

在 ES6 中,JavaScript 的数据类型得到了扩展,增加了一种新的基本数据类型——符号(Symbol)。以下是 ES6 中的基础数据类型及其说明:

1. 字符串(String)

字符串类型在 ES6 中没有变化,仍然是由字符组成的文本,可以使用单引号、双引号或反引号(模板字符串)来定义。

let message = "Hello, ES6!";
let greeting = 'Hello, ES6!';
let multiLine = `This is amulti-line string.
`;

2. 数字(Number)

数字类型同样没有变化,可以表示整数或浮点数。

let integer = 42;
let float = 3.14159;

ES6 引入了一些新的数值常量:

let maxInteger = Number.MAX_SAFE_INTEGER; // 9007199254740991
let minInteger = Number.MIN_SAFE_INTEGER; // -9007199254740991
let maxFloat = Number.MAX_VALUE; // 1.7976931348623157e+308
let minFloat = Number.MIN_VALUE; // 5e-324
let epsilon = Number.EPSILON; // 2.220446049250313e-16
let infinity = Number.POSITIVE_INFINITY; // Infinity
let negativeInfinity = Number.NEGATIVE_INFINITY; // -Infinity
let notANumber = Number.NaN; // NaN

3. 布尔值(Boolean)

布尔类型用于表示逻辑值 truefalse

let isDone = false;
let hasError = true;

4. 未定义(Undefined)

未定义类型表示变量已声明但未初始化时的值。

let sample;
console.log(sample); // 输出:undefined

5. 空值(Null)

空值类型表示“无”或“空”的意图。

let nothing = null;

6. 符号(Symbol)

符号是 ES6 引入的一种新的基本数据类型,它用于创建唯一的、不可变的标识符。

let mySymbol = Symbol('mySymbol');

符号可以用作对象的属性键,以确保不会与其他属性键冲突。

7. 对象(Object)

对象类型在 ES6 中仍然是键值对的集合,可以是字典、数组、函数等。

let obj = {name: "Alice",age: 25
};

8. 数组(Array)

数组类型用于表示有序集合,可以包含任意类型的元素。

let numbers = [1, 2, 3, 4, 5];

9. 函数(Function)

函数类型在 ES6 中仍然是可执行的代码块,可以带有参数和返回值。

function add(a, b) {return a + b;
}

10. 整数(BigInt)

ES2020(ES11)引入了一种新的数值类型 BigInt,用于表示大于 Number.MAX_SAFE_INTEGER 的整数。

let bigInt = BigInt(Number.MAX_SAFE_INTEGER) + BigInt(1);

BigInt 类型的值以 n 结尾,例如 123n

这些基础数据类型构成了 ES6 中 JavaScript 的基础,使得 JavaScript 能够更好地处理各种数据,并提供了更多的编程工具。

对象属性迭代

对象属性迭代

在 ES6 中,对象属性迭代可以通过几种不同的方法来实现。这些方法允许你访问对象中的属性,无论是通过传统的 for...in 循环,还是通过新的 Object.keys()Object.values()Object.entries() 方法。

1. for...in 循环

for...in 循环可以遍历一个对象的所有可枚举属性,包括其原型链上的属性。

const obj = { a: 1, b: 2, c: 3 };for (const key in obj) {if (obj.hasOwnProperty(key)) {console.log(key, obj[key]);}
}

在这个例子中,hasOwnProperty 方法用于过滤掉原型链上的属性,只处理对象自身的属性。

2. Object.keys()

Object.keys() 方法返回一个包含对象自身可枚举属性名称的数组。

const obj = { a: 1, b: 2, c: 3 };Object.keys(obj).forEach(key => {console.log(key, obj[key]);
});

这个方法不会遍历原型链上的属性。

3. Object.values()

Object.values() 方法返回一个包含对象自身可枚举属性值的数组。

const obj = { a: 1, b: 2, c: 3 };Object.values(obj).forEach(value => {console.log(value);
});

同样,这个方法也不会遍历原型链上的属性。

4. Object.entries()

Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,每个键值对是键和值的数组。

const obj = { a: 1, b: 2, c: 3 };Object.entries(obj).forEach(([key, value]) => {console.log(key, value);
});

这个方法提供了对象属性的键和值的访问方式,也不会遍历原型链上的属性。

5. Reflect.ownKeys()

Reflect.ownKeys() 方法返回一个由目标对象自身的属性键组成的数组。

const obj = { a: 1, b: 2, c: 3 };Reflect.ownKeys(obj).forEach(key => {console.log(key, obj[key]);
});

这个方法会返回所有自有属性键,无论它们是否可枚举,也不论它们是否不可枚举。

6. 使用 Symbol 属性

如果对象属性是 Symbol 类型,那么 Object.keys()Object.values()Object.entries() 默认不会返回这些属性。要迭代包含 Symbol 属性的对象,你需要使用 Object.getOwnPropertySymbols() 方法。

const obj = { a: 1, [Symbol('b')]: 2, c: 3 };Object.getOwnPropertySymbols(obj).forEach(symbol => {console.log(symbol, obj[symbol]);
});
7. 使用 for...of 循环和 Map 迭代器

如果你需要迭代一个 Map 对象,可以使用 for...of 循环和 Map 的迭代器。

const map = new Map([['a', 1], ['b', 2], ['c', 3]]);for (const [key, value] of map) {console.log(key, value);
}

这些方法提供了灵活的方式来迭代对象属性,你可以根据具体需求选择合适的方法。

数组迭代

在 ES6 中,数组迭代可以通过多种方式实现,包括传统的循环、数组方法以及迭代器。以下是一些常用的数组迭代方法:

1. for 循环

传统的 for 循环允许你访问数组的索引和元素。

const array = [1, 2, 3, 4, 5];
for (let i = 0; i < array.length; i++) {console.log(array[i]);
}

2. for...of 循环

for...of 循环提供了一种简洁的方式来迭代可迭代对象,包括数组。

const array = [1, 2, 3, 4, 5];
for (const value of array) {console.log(value);
}

3. forEach 方法

forEach 方法对数组的每个元素执行一次提供的函数。

const array = [1, 2, 3, 4, 5];
array.forEach((value, index) => {console.log(value, index);
});

4. map 方法

map 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。

const array = [1, 2, 3, 4, 5];
const newArray = array.map(value => value * 2);
console.log(newArray); // [2, 4, 6, 8, 10]

5. filter 方法

filter 方法创建一个新数组,包含通过所提供函数实现的测试的所有元素。

const array = [1, 2, 3, 4, 5];
const filteredArray = array.filter(value => value > 2);
console.log(filteredArray); // [3, 4, 5]

6. reduce 方法

reduce 方法对数组中的每个元素执行一个由你提供的“reducer”函数(升序执行),将其结果汇总为单个返回值。

const array = [1, 2, 3, 4, 5];
const sum = array.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 15

7. some 方法

some 方法测试数组中是不是至少有一个元素通过了被提供的函数测试。它返回的是一个布尔值。

const array = [1, 2, 3, 4, 5];
const hasEven = array.some(value => value % 2 === 0);
console.log(hasEven); // true

8. every 方法

every 方法测试数组的所有元素是否都通过了指定函数的测试。它返回的是一个布尔值。

const array = [1, 2, 3, 4, 5];
const allPositive = array.every(value => value > 0);
console.log(allPositive); // true

9. find 方法

find 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined

const array = [1, 2, 3, 4, 5];
const firstEven = array.find(value => value % 2 === 0);
console.log(firstEven); // 2

10. findIndex 方法

findIndex 方法返回数组中满足提供的测试函数的第一个元素的索引。若没有满足条件的元素则返回 -1

const array = [1, 2, 3, 4, 5];
const firstEvenIndex = array.findIndex(value => value % 2 === 0);
console.log(firstEvenIndex); // 1

11. keys 方法

keys 方法返回一个包含数组中每个索引键的新 Array Iterator 对象。

const array = [1, 2, 3, 4, 5];
const iterator = array.keys();for (const key of iterator) {console.log(key); // 0, 1, 2, 3, 4
}

12. values 方法

values 方法返回一个包含数组中每个索引值的新 Array Iterator 对象。

const array = [1, 2, 3, 4, 5];
const iterator = array.values();for (const value of iterator) {console.log(value); // 1, 2, 3, 4, 5
}

13. entries 方法

entries 方法返回一个包含数组中每个索引的键值对的新 Array Iterator 对象。

const array = [1, 2, 3, 4, 5];
const iterator = array.entries();for (const [index, value] of iterator) {console.log(index, value); // 0 1, 1 2, 2 3, 3 4, 4 5
}

这些方法提供了灵活且强大的方式来迭代数组,你可以根据具体需求选择合适的方法。

this指代

在 JavaScript 中,this 是一个关键字,它指向当前执行上下文(execution context)中的对象。this 的值在函数调用时确定,它可以是全局对象、调用函数的对象、构造函数、或者由 bindcallapply 方法指定的对象。以下是 this 在不同情况下的详细说明:

全局上下文

在全局执行上下文中(在任何函数体外部),this 指向全局对象。在浏览器中,全局对象是 window;在 Node.js 中,全局对象是 global

console.log(this); // 在浏览器中输出 window 对象,在 Node.js 中输出 global 对象

函数调用

在普通函数调用中,this 指向全局对象(非严格模式)或 undefined(严格模式)。

function normalFunction() {console.log(this); // 非严格模式下输出 window 对象,严格模式下输出 undefined
}normalFunction();

对象方法

在对象的方法中,this 指向调用该方法的对象。

const obj = {myMethod: function() {console.log(this); // 输出 obj 对象}
};obj.myMethod();

构造函数

在构造函数中,this 指向新创建的对象实例。

function MyConstructor() {this.myProperty = 'value';
}const myInstance = new MyConstructor();
console.log(myInstance.myProperty); // 输出 'value'

箭头函数

箭头函数不绑定自己的 this,它们继承所在上下文的 this 值。

const obj = {myMethod: function() {const arrowFunction = () => {console.log(this); // 输出 obj 对象,因为箭头函数继承了这个上下文的 this};arrowFunction();}
};obj.myMethod();

bindcallapply 方法

使用 bindcallapply 方法调用函数时,this 被显式指定为方法的第一个参数。

function myFunction() {console.log(this);
}const myBoundFunction = myFunction.bind({ myProperty: 'value' });
myBoundFunction(); // 输出 { myProperty: 'value' }const myObject = { myProperty: 'value' };
myFunction.call(myObject); // 输出 myObject
myFunction.apply(myObject); // 输出 myObject

DOM 事件处理

在 DOM 事件处理函数中,this 指向触发事件的元素。

document.getElementById('myElement').addEventListener('click', function() {console.log(this); // 输出被点击的 DOM 元素
});

类方法

在类的方法中,this 指向类的实例。

class MyClass {myMethod() {console.log(this); // 输出 MyClass 的实例}
}const myInstance = new MyClass();
myInstance.myMethod(); // 输出 MyClass 的实例

理解 this 的行为对于编写正确的 JavaScript 代码至关重要。在不同的上下文中,this 的值可能会有很大差异,因此在使用时需要格外注意。

箭头函数和常规函数在this上有何不同?

箭头函数和常规函数(即函数表达式和函数声明)在处理 this 关键字时有着本质的不同。这些差异主要源于箭头函数不绑定自己的 this,而是捕获其所在上下文的 this 值作为自己的 this 值。

常规函数(函数表达式和函数声明)

在常规函数中,this 的值是在函数被调用时确定的,这取决于函数的调用方式:

  • 在全局执行上下文中(在任何函数体外部),this 指向全局对象(在浏览器中是 window,在 Node.js 中是 global)。
  • 在普通函数调用中,this 指向全局对象(非严格模式)或 undefined(严格模式)。
  • 在对象方法中,this 指向调用该方法的对象。
  • 在构造函数中,this 指向新创建的对象实例。
  • 使用 bindcallapply 方法调用函数时,this 被显式指定为方法的第一个参数。
function normalFunction() {console.log(this); // 全局对象或 undefined
}normalFunction();const obj = {method: function() {console.log(this); // 指向 obj}
};obj.method();const boundFunction = (function() {console.log(this); // 全局对象或 undefined
}).bind(obj);boundFunction();

箭头函数

箭头函数不绑定自己的 this,它们继承所在上下文的 this 值:

  • 在全局执行上下文中,箭头函数的 this 指向全局对象。
  • 在对象方法中,箭头函数的 this 指向对象。
  • 在构造函数中,箭头函数的 this 指向全局对象,因为箭头函数不能用作构造函数。
  • 使用 bindcallapply 方法调用箭头函数时,this 不会改变,因为这些方法不能改变箭头函数的 this 值。
const arrowFunction = () => {console.log(this); // 全局对象
};arrowFunction();const obj = {arrowMethod: () => {console.log(this); // 全局对象}
};obj.arrowMethod();const arrowFunctionWithThis = (function() {return () => {console.log(this); // 全局对象};
})();arrowFunctionWithThis()();

总结

箭头函数和常规函数的主要区别在于 this 的处理方式。箭头函数不绑定自己的 this,而是捕获其所在上下文的 this 值,这使得箭头函数在需要引用外层 this 值时非常有用。然而,这也意味着箭头函数不能用作构造函数,因为它们没有自己的 this 绑定。

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

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

相关文章

向量模型Jina Embedding: 从v1到v3论文笔记

文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相…

「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用&#xff0c;用户可以通过滑动条选择不同的数值&#xff0c;并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。 关键词 UI互动应用Slider 组件状态管理动态数值更新用户交互 一、功能说明 在…

全连接神经网络案例——手写数字识别

文章目录 1.我们导入需要的工具包2.数据加载3.数据处理4.模型构建5.模型编译6.模型训练7.模型测试8.模型保存 使⽤⼿写数字的MNIST数据集如上图所示&#xff0c;该数据集包含60,000个⽤于训练的样本和10,000个⽤于测试的样本&#xff0c;图像是固定⼤⼩(28x28像素)&#xff0c;…

2.ARM_ARM是什么

CPU工作原理 CPU与内存中的内容&#xff1a; 内存中存放了指令&#xff0c;每一个指令存放的地址不一样&#xff0c;所需的内存空间也不一样。 运算器能够进行算数运算和逻辑运算&#xff0c;这些运算在CPU中都是以运算电路的形式存在&#xff0c;一个运算功能对应一种运算电…

MetaGeneMark:宏转录组转录本基因预测

GeneMark™ download 下载 gunzip gm_key_64.gz tar -xvzf MetaGeneMark_linux_64.tar.gz #查看安装 (完整路径)/gmhmmp #解压文件里面这个比较重要 MetaGeneMark_linux_64/mgm/MetaGeneMark_v1.mod #复制gm_key文件到主路径 mv gm_key_64 .gm_key cp .gm_key /home/zhongpei…

腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时

前言 也是尝试了各种解决方案之后&#xff0c;无果&#xff0c; 后来发现每个服务器提供商都有自己的镜像加速&#xff0c;且只给自家服务器使用&#xff0c;我用的腾讯云 教程 安装docker 直接上链接&#xff1a;云服务器 搭建 Docker-实践教程-文档中心-腾讯云 配置加速镜…

各家AI性格不同,怎样取长补短

你发现了么&#xff0c;每家的AI性格也有区别呢&#xff0c;有些AI比较啰嗦&#xff0c;有些AI回答简洁明了&#xff0c;有些AI条理清晰喜欢列1、2、3。 我们在利用AI的时候&#xff0c;也要学会取长补短&#xff0c;参考各家AI的回答&#xff0c;择优录用。 例如&#xff0c…

Django安装

在终端创建django项目 1.查看自己的python版本 输入对应自己本机python的版本&#xff0c;列如我的是3.11.8 先再全局安装django依赖包 2.在控制窗口输入安装命令&#xff1a; pip3.11 install django 看到Successflully 说明我们就安装成功了 python的Scripts文件用于存…

Socket 和 WebSocket 的应用

Socket&#xff08;套接字&#xff09;是计算机网络中的一个抽象层&#xff0c;它允许应用程序通过网络进行通信。套接字用于跨网络的不同主机上的应用程序之间的数据交换。在互联网中&#xff0c;套接字通常基于 TCP&#xff08;传输控制协议&#xff09;或 UDP&#xff08;用…

Materials Studio 2023安装教程(仅作分享参考)

目录 一、软件下载 二、软件介绍 2.1 软件特点 2.2 功能模块 2.3 应用领域 三、安装步骤 一、软件下载 软件名称&#xff1a;Materials Studio 2023 软件语言&#xff1a;英文 软件大小&#xff1a;2.03G 系统要求&#xff1a;Windows10或更高&#xff0c; 64位操作系…

Spark SQL大数据分析快速上手-DataFrame应用体验

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 本节主要介绍如何使用DataFrame进行编程。 4.1.1 SparkSession 在旧版本中&#xff0c;Spark SQL提供…

SSM中maven

一&#xff1a;maven的分模块开发 maven分模块就是在多人操作一个项目时将maven模块导入依赖&#xff0c;注意仓库里面没有资源坐标&#xff0c;需要使用install操作下载。 二&#xff1a;maven的依赖管理 pom文件中直接写的依赖叫做直接依赖&#xff0c;直接依赖中用到的依…

25中海油笔试测评春招秋招校招暑期实习社招笔试入职测评行测题型微测网题型分享

中海油笔试一般采用线上机考的形式。考试时间为 120 分钟&#xff0c;满分 100 分。笔试内容主要包括思想素质测评和通用能力测评两个科目。以下是具体介绍&#xff1a; 1. 思想素质测评&#xff1a; ✅价值观&#xff1a;考察考生对工作、职业、企业等方面的价值观念和态度&…

【笔记】变压器-热损耗-频响曲线推导 - 04 额定功率处损耗特性

0.最大的问题 - 散热 对变压器这类功率器件&#xff0c;最大的问题是散热的效率。因为传统的电路基板热导率并不高&#xff0c;几乎和良性导热材料有近乎两个数量级的导热差异&#xff0c;所以&#xff0c;会采用特殊的导热技术&#xff0c;把热量尽可能快地传导到散热片。 传…

定高虚拟列表:让大数据渲染变得轻松

定高虚拟列表 基本认识 在数据如潮水般涌来的今天&#xff0c;如何高效地展示和管理这些数据成为了开发者们面临的一大挑战&#xff0c;传统的列表渲染方式在处理大量数据时&#xff0c;往往会导致页面卡顿、滚动不流畅等问题&#xff0c;严重影响用户体验&#xff08;在页面…

我的博客网站为什么又回归Blazor了

引言 在博客网站的开发征程中&#xff0c;站长可谓是一路披荆斩棘。从最初的构思到实践&#xff0c;先后涉足了多种开发技术&#xff0c;包括 MVC、Razor Pages、Vue、Go、Blazor 等。在这漫长的过程中&#xff0c;网站版本更迭近 10 次&#xff0c;每一个版本都凝聚着站长的心…

Uniapp安装Pinia并持久化(Vue3)

安装pinia 在uni-app的Vue3版本中&#xff0c;Pinia已被内置&#xff0c;无需额外安装即可直接使用&#xff08;Vue2版本则内置了Vuex&#xff09;。 HBuilder X项目&#xff1a;直接使用&#xff0c;无需安装。CLI项目&#xff1a;需手动安装&#xff0c;执行yarn add pinia…

<网络> 协议

目录 文章目录 一、认识协议 1. 协议概念 2. 结构化数据传输 3. 序列化和反序列化 二、网络计算器 1. 封装socket类 2. 协议定制 request类的序列化和反序列化 response类的序列化和反序列化 报头的添加与去除 Json序列化工具 Jsoncpp 的主要特点: Jsoncpp 的使用方法: 3. Ser…

群控系统服务端开发模式-应用开发-文件上传功能开发

一、文件上传路由 在根目录下route文件夹中app.php文件中&#xff0c;添加文件上传功能路由&#xff0c;代码如下&#xff1a; Route::post(upload/file,common.Upload/file);// 上传文件接口 二、功能代码开发 在根目录下app文件夹下common文件夹中创建上传控制器并命名为Up…

pycharm小游戏贪吃蛇及pygame模块学习()

由于代码量大&#xff0c;会逐渐发布 一.pycharm学习 在PyCharm中使用Pygame插入音乐和图片时&#xff0c;有以下这些注意事项&#xff1a; 插入音乐&#xff1a; - 文件格式支持&#xff1a;Pygame常用的音乐格式如MP3、OGG等&#xff0c;但MP3可能需额外安装库&#xf…