当前位置: 首页 > news >正文

02-ES6新语法

1. ES6 Proxy与Reflect

1.1 概述

Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。

Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理。它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,在进行这些操作时,可以添加一些需要的额外操作。

Reflect 可以用于获取目标对象的行为,它与 Object 类似,但是更易读,为操作对象提供了一种更优雅的方式。它的方法与 Proxy 是对应的。

1.2 基本用法

1.2.1 Proxy(代理)

proxy,代理,使用代理,我们可以操作对象时,需要先经过代理,才能到达对象,这样就可以起到‘拦截’的作用。

一个 Proxy 对象由两个部分组成: target 、 handler 。在通过 Proxy 构造函数生成实例对象时,需要提供这两个参数。 target 即目标对象, handler 是一个对象,声明了代理 target 的指定行为,拦截过滤代理操作的。

let target = {name: 'zhangmeili',age: 24
}
let handler = {get: function(target, key) {console.log('getting '+key);return target[key]; // 不是target.key},set: function(target, key, value) {console.log('setting '+key);target[key] = value;}
}
let proxy = new Proxy(target, handler)
proxy.name     // 实际执行 handler.get
proxy.age = 25 // 实际执行 handler.set
总结proxy的用处:

实现拦截和监视外部对对象的访问。

降低函数和类的复杂度,优雅的写出代理代码。

在复杂操作前对操作进行校验或对所需资源进行管理。

场景:
  1. 抽离校验模块。

  2. 私有属性。

  3. 预警和拦截。

  4. 过滤操作。

  5. 中断代理。

1.2.2 Reflect(反射)

ES6 中将 Object 的一些明显属于语言内部的方法移植到了 Reflect 对象上(当前某些方法会同时存在于 Object 和 Reflect 对象上),未来的新方法会只部署在 Reflect 对象上。

Reflect 对象对某些方法的返回结果进行了修改,使其更合理。

Reflect 对象使用函数的方式实现了 Object 的命令式操作。

静态方法

Reflect.get(target, key, receiver)

查找并返回 target 对象的 key属性。

let person = {name: "zhangmeili",age: 24,get info(){return this.name + this.age;}
}
Reflect.get(person, 'name'); // "zhangmeili"// 当 target 对象中存在 name 属性的 getter 方法, getter 方法的 this 会绑定 // receiver
let receiver = {name: "wangshuai",age: 20
}
Reflect.get(person, 'info', receiver); // wangshuai// 当 name 为不存在于 target 对象的属性时,返回 undefined
Reflect.get(person, 'birth'); // undefined// 当 target 不是对象时,会报错
Reflect.get(1, 'name'); // TypeError
​
​
let person = {name: "zhangmeili",age: 24,get info() {return this.name + this.age;}
};
Reflect.set(person,'sex','男');
console.log(person);
总结reflect的用处

reflect有的方法object都有,es6希望数据和逻辑代码分离,那么object就是纯数据,所有的逻辑都放到reflect上,对象对某些方法的返回结果进行了修改,使其更合理。

场景:
  1. 当object的工具类来用。

1.2.3 组合使用

Reflect 对象的方法与 Proxy 对象的方法是一一对应的。所以 Proxy 对象的方法可以通过调用 Reflect 对象的方法获取默认行为,然后进行额外操作。

let person = {name: "zhangmeili",age: 24
}
let handler = {get: function(target, key){console.log("getting "+key);return Reflect.get(target,key);},set: function(target, key, value){console.log("setting "+key+" to "+value)Reflect.set(target, key, value);}
}
let proxy = new Proxy(person, handler)
// 设置
proxy.name = "wangshuai"
//获取
console.log(proxy.name);

2. ES6 字符串

2.1 子串的识别

ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别方法。

  • includes():返回布尔值,判断是否找到参数字符串。

  • startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。

  • endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。

以上三个方法都可以接受两个参数,需要搜索的字符串,和可选的搜索起始位置索引。

let string = "apple,banana,orange";
string.includes("banana");     // true
string.startsWith("apple");    // true
string.endsWith("apple");      // false
string.startsWith("banana",6)  // true

注意:

  • 这三个方法只返回布尔值,如果需要知道子串的位置,还是得用 indexOf 和 lastIndexOf 。

  • 这三个方法如果传入了正则表达式而不是字符串,会抛出错误。而 indexOf 和 lastIndexOf 这两个方法,它们会将正则表达式转换为字符串并搜索它。

2.2 字符串重复

repeat():返回新的字符串,表示将字符串重复指定次数返回。

console.log("Hello,".repeat(2));  // "Hello,Hello,"

2.3 字符串补全

  • padStart(targetLength [, padString]):返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。

  • padEnd(targetLength [, padString]):返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。

以上两个方法接受两个参数,第一个参数是指定生成的字符串的最小长度,第二个参数是用来补全的字符串。如果没有指定第二个参数,默认用空格填充。

console.log("h".padStart(5,"o"));  // "ooooh"
console.log("h".padEnd(5,"o"));    // "hoooo"
console.log("h".padStart(5));      // "    h"

2.4 模板字符串

模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。

let string = `Hello'\n'world`;
console.log(string); 
// "Hello'"
// "'world"
​
//模板字符串  ``反引号
var num = 123
var fn = function () {return "hello"
}
let str66 = "hello \n everyone"
console.log(str66);
​
let str666 = `hello everyone ${num + 10} ${fn()}`
console.log(str666);
​
let str2=`hello`

3. ES6 数值

3.1 数值的表示(了解)

二进制表示法新写法: 前缀 0b 或 0B 。

console.log(0b11 === 3); // true
console.log(0B11 === 3); // true

八进制表示法新写法: 前缀 0o 或 0O 或0。

console.log(0o11 === 9); // true
console.log(0O11 === 9); // true

3.2 Number对象新方法

  • Number.isNaN():用于检查一个值是否为 NaN 。

console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN('true'/0)); // true// 在全局的 isNaN() 中,以下皆返回 true,因为在判断前会将非数值向数值转换
// 而 Number.isNaN() 不存在隐式的 Number() 类型转换,非 NaN 全部返回 false
Number.isNaN("NaN");      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN("true");     // false

3.2 指数运算符(了解)

1 ** 2; // 1
// 右结合,从右至左计算
2 ** 2 ** 3; // 256
// **=
let power  = 2;
power  **= 3; // 8

3.3 parseInt(string, radix)方法补充

parseInt(string, radix)
string必需。要解析的字符串。
radix可选。代表要使用的数字系统的数字(从 2 到 36)。如果是0,radix被假定10(十进制)

面试题:

["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]?
//解析:
arr.map(function(value,index){})  
​
parseInt('1',0); //1
​
parseInt('2',1);//NaN
​
parseInt('3',2);//NaN
​
​
//例如
parseInt('11',16);//17

4. ES6 对象(重点)

4.1 属性的简洁表示法

const age = 18;
const name = "zhangmeili";
const person = {age, name};
console.log(person) //{age: 18, name: "zhangmeili"}
//等同于
const person = {age: age, name: name}

4.2 方法名也可以简写

const person = {sayHi(){console.log("Hi");}
}
person.sayHi();  //"Hi"
//等同于
const person = {sayHi:function(){console.log("Hi");}
}
person.sayHi();//"Hi"

4.3 属性名表达式

ES6允许用表达式作为属性名,但是一定要将表达式放在方括号[ ]内。

const obj = {["he"+"llo"](){return "Hi";}
}
obj.hello();  //"Hi"

注意点:属性的简洁表示法和属性名表达式不能同时使用,否则会报错。

const hello = "Hello";
const obj = {[hello]
};
​
//SyntaxError: Unexpected token }
console.log(obj);const hello = "Hello";
const obj = {[hello+"2"]:"world"
};
​
//{Hello2: "world"}
console.log(obj);
​

4.4 扩展运算符-对象中的用法(重点)

扩展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。

  • 基本用法-拷贝对象

let person = {name: "zhangmeili", age: 18};
let pcopy = { ...person };
console.log(pcopy); //{name: "zhangmeili", age: 15}
  • 可用于合并两个对象

let age = {age: 18};
let name = {name: "zhangmeili"};
let person= {...age, ...name};
console.log(person) //{age: 18, name: "zhangmeili"}

注意:

自定义的属性和扩展运算符对象里面属性的相同的时候:自定义的属性在扩展运算符后面,则扩展运算符对象内部同名的属性将被覆盖掉。

4.5 对象的新方法

Object.is(value1, value2) 用来比较两个值是否严格相等,与(===)基本类似。

Object.is("q","q");      // true
Object.is(1,1);          // true
Object.is([1],[1]);      // false
Object.is({q:1},{q:1});  // false
Object.is(NaN, NaN);// true

5. ES6 数组

5.1 数组创建

  • Array.of()将参数中所有值作为元素形成数组。

console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
 
// 参数值可为不同类型
console.log(Array.of(1, '2', true)); // [1, '2', true]
 
// 参数为空时返回空数组
console.log(Array.of()); // []
  • Array.from()将类数组对象或可迭代对象转化为数组。

 // 浅拷贝数组
var arr=[1,2,3];
console.log(Array.from(arr)); //[1,2,3]
​
// 参数为数组,返回与原数组一样的数组
console.log(Array.from([1, 2])); // [1, 2]

5.2 数组的新方法

  • arr.findIndex(callback)查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。

let arr = Array.of(2,5,6,-7,2);
console.log(arr.findIndex(function(value,index){if(value < 0){return index;}
}));
  • arr.flat([depth]) 嵌套数组转指定深度的数组。

let arr = [1,2,4,[5,6,77,[2,3,45,'你好啊']]];
arr2 = arr.flat(1);
console.log(arr2);

5.3 扩展运算符-数组中的用法(重点)

  • 复制数组

let arr1 = [1, 2];
let arr2 = [...arr1];
console.log(arr2); // [1, 2]
  • 合并数组

let arr = [1,2,4];
let arr2 = ["你好","world",'qqqq',true];
let arr3 = [...arr,...arr2];
console.log(arr3);
  • 将伪数组转换为数组

var boxes = document.querySelectorAll('div');
console.log(boxes);
console.log([...boxes]);

5.4 剩余运算符和扩展运算符的区别

剩余运算符收集这些集合数据,扩展运算符是将数组或对象拆分成元素的集合,它们是相反的

//剩余运算符收集数据
function fun1(a, b, ...arr1) {console.log(arr1.length);
}
fun1(1,23,4);
​
//扩展运算符--合并对象/数组
let age = {age: 18};
let name = {name: "zhangmeili"};
let person= {...age, ...name};
console.log(person) //{age: 18, name: "zhangmeili"}

相关文章:

02-ES6新语法

1. ES6 Proxy与Reflect 1.1 概述 Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。 Proxy 可以对目标对象的读取、函数调用等操作进行拦截&#xff0c;然后进行操作处理。它不直接操作对象&#xff0c;而是像代理模式&#xff0c;通过对象的代理对象进行操作&#xff0c;…...

Vue3中VueRouter基本用法及与Vue2中路由使用差异解析

Vue Router 在 Vue3 中被重写&#xff0c;使用了 Vue3 的 Composition API。使用上跟Vue2 相比有些不同&#xff0c;需要注意。 首先&#xff0c;让我们来看一下 Vue3 中 VueRouter 的基本使用方法&#xff1a; 安装 Vue Router&#xff1a; npm install vue-routernext创建…...

10.Docker Compose容器编排

文章目录 Compose简介安装和卸载步骤核心概念compose文件两要素 使用步骤Compose常用命令微服务测试本地编码打包编写Dockerfile文件构建镜像 不使用Compose调试使用Compose调试WordPress测试验证增量更新 Compose简介 ​ docker建议我们每一个容器中只运行一个服务,因为docke…...

【算法——动态规划(从dfs回溯开始推导dp)】

基础理论 递归&#xff1a; 递&#xff1a;大问题分解子问题的过程 &#xff1b; 归&#xff1a;产生答案 dp&#xff1a;只进行归&#xff1b;用已知的最底层的&#xff08;递归的边界&#xff0c;搜索树的底&#xff09;&#xff0c;推出未知 《视频索引》 一句话&…...

不是所有洗碗机都能空气除菌 友嘉灵晶空气除菌洗碗机评测

精致的三餐让你以为生活是“享受”&#xff0c;可饭后那些油腻的锅碗瓢盆却成了你我美好生活的最大障碍。想要只吃美食不洗碗&#xff0c;那一台优秀的洗碗机就必不可少了&#xff01;今天&#xff0c;ZOL中关村在线要评测的就是这样一台不光洗得干净更能有效除菌抑菌的洗碗机—…...

【Linux】如何创建yum 组(yum groups)

如何创建yum 组(yum groups) 在 yum 中创建组信息需要手动编辑并创建一个组文件&#xff0c;然后使用 createrepo 工具生成组信息。以下是一个详细的步骤指南&#xff1a; 1. 创建组信息文件 首先&#xff0c;创建一个 XML 文件来定义组信息。例如&#xff0c;创建一个名为 …...

Linux ssh远程关闭如何保持进程在后台运行的解决方案

问题描述&#xff1a; Unix/Linux下一般想让某个程序在后台运行&#xff0c;很多都是使用 nohup & 在程序结尾让程序自动运行。 使用SSH远程Linux服务器启动应用&#xff0c;都是使用nohup &命令&#xff0c;结果关闭SSH应用仍然挂断了。 我们很多程序并不象mysqld一…...

TypeScript中的泛型

在 TypeScript&#xff08;简称 TS&#xff09;中&#xff0c;泛型&#xff08;Generics&#xff09;是一种允许你为组件&#xff08;如类、接口和函数&#xff09;定义灵活、可重用的类型的方式。泛型可以看作是一种类型参数化&#xff0c;允许你在声明时定义一个或多个类型占…...

LeetCode-2779. 数组的最大美丽值【数组 二分查找 排序 滑动窗口】

LeetCode-2779. 数组的最大美丽值【数组 二分查找 排序 滑动窗口】 题目描述&#xff1a;解题思路一&#xff1a;滑动窗口与排序解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums 和一个 非负 整数 k 。 在一步操…...

RIP与OSPF发布默认路由(华为)

#交换设备 RIP与OSPF发布默认路由 合理使用默认路由可以很大程度上减少本地路由表的大小&#xff0c;并可以较好的隐藏一个网络中的路由信息&#xff0c;保护自身网络的隐秘性 另外如果在同一个路由器两端使用了不同的路由协议&#xff0c;那么如果不做路由引入或者发布默认…...

Android 一个改善的okHttp封装库

Android Studio 使用前&#xff0c;对于Android Studio的用户&#xff0c;可以选择添加: compile project(‘:okhttputils’) 或者 compile ‘com.zhy:okhttputils:2.0.0’ Eclipse 自行copy源码。 二、基本用法 目前基本的用法格式为&#xff1a; OkHttpUtils .get()…...

瓦罗兰特低价区怎么下载 瓦罗兰特低价区下载教程+免费加速器推荐

瓦罗兰特是由拳头发行的游戏&#xff0c;以其丰富的游戏内容和刺激的竞技体验赢得了广大玩家的喜爱。于其它热门的射击游戏不一样的是&#xff0c;我们在游戏中可以选择不的英雄&#xff0c;每一个英雄都有着自己独特的技能&#xff0c;我们还可以在游戏中强行改变地形帮助我们…...

lspci总结

lspci总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨一个在 Linux 系统中常用的命令&#xff1a;lspci。lspci 命令用于列出当前系统中的 P…...

Android开启HTTP服务

需求&#xff1a;通过手机给设备升级固件&#xff0c;设备有WIFI 方案&#xff1a;升级包放到APP可以访问的目录&#xff0c;手机开热点并启动一个HTTP服务&#xff0c;设备连接手机热点&#xff0c;另外&#xff0c;设备端开启一个 telnet 服务&#xff0c;手机通过 telnet 登…...

NLP - word2vec详解

Word2Vec是一种用于将词汇映射到高维向量空间的自然语言处理技术。由Google在2013年提出&#xff0c;它利用浅层神经网络模型来学习词汇的分布式表示。Word2Vec有两种主要模型&#xff1a;CBOW&#xff08;Continuous Bag of Words&#xff09;和Skip-gram。 1. 模型介绍 Con…...

AI办公自动化:用通义千问批量翻译长篇英语TXT文档

在deepseek中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;现在要完成一个编写基于qwen-turbo模型API和dashscope库的程序脚本&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;F:\AI自媒体内容\待翻译&#xff1b; 获取里面所有TXT文档&#xff…...

一键解压,无限可能——BetterZip,您的Mac必备神器!

BetterZip for Mac 是一款高效、智能且安全的解压缩软件&#xff0c;专为Mac用户设计。它提供了直观易用的界面&#xff0c;使用户能够轻松应对各种压缩和解压缩需求。 这款软件不仅支持多种压缩格式&#xff0c;如ZIP、RAR、7Z等&#xff0c;还具备快速解压和压缩文件的能力。…...

【数学】什么是最大似然估计?如何求解最大似然估计

背景 最大似然估计&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是一种估计统计模型参数的方法。它在众多统计学领域中被广泛使用&#xff0c;比如回归分析、时间序列分析、机器学习和经济学。其核心思想是&#xff1a;给定一个观测数据集&#xff0c;找到一组…...

跟张良均老师学大数据人工智能|企业项目试岗实训开营

我国高校毕业生数量连年快速增长&#xff0c;从2021年的909万人到2022年的1076万人&#xff0c;再到2023年的1158万人&#xff0c;预计到2024年将达到1187万人&#xff0c;2024年高校毕业生数量再创新高。 当年高校毕业生人数不等于进入劳动力市场的高校毕业生人数&#x…...

Pentest Muse:一款专为网络安全人员设计的AI助手

关于Pentest Muse Pentest Muse是一款专为网络安全研究人员和渗透测试人员设计和开发的人工智能AI助手&#xff0c;该工具可以帮助渗透测试人员进行头脑风暴、编写Payload、分析代码或执行网络侦查任务。除此之外&#xff0c;Pentest Muse甚至还能够执行命令行代码并以迭代方式…...

10 SpringBoot 静态资源访问

我们在开发Web项目的时候&#xff0c;往往会有很多静态资源&#xff0c;如html、图片、css等。那如何向前端返回静态资源呢&#xff1f; 以前做过web开发的同学应该知道&#xff0c;我们以前创建的web工程下面会有一个webapp的目录&#xff0c;我们只要把静态资源放在该目录下…...

Unity 之通过自定义协议从浏览器启动本地应用程序

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity 之通过自定义协议从浏览器启动本地应用程序 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进…...

Python抓取天气信息

Python的详细学习还是需要些时间的。如果有其他语言经验的&#xff0c;可以暂时跟着我来写一个简单的例子。 2024年最新python教程全套&#xff0c;学完即可进大厂&#xff01;&#xff08;附全套视频 下载&#xff09; (qq.com) 我们计划抓取的数据&#xff1a;杭州的天气信息…...

【超越拟合:深度学习中的过拟合与欠拟合应对策略】

如何处理过拟合 由于过拟合的主要问题是你的模型与训练数据拟合得太好&#xff0c;因此你需要使用技术来“控制它”。防止过拟合的常用技术称为正则化。我喜欢将其视为“使我们的模型更加规则”&#xff0c;例如能够拟合更多类型的数据。 让我们讨论一些防止过拟合的方法。 获…...

【Orange Pi 5与Linux内核编程】-理解Linux内核中的container_of宏

理解Linux内核中的container_of宏 文章目录 理解Linux内核中的container_of宏1、了解C语言中的struct内存表示2、Linux内核的container_of宏实现理解3、Linux内核的container_of使用 Linux 内核包含一个名为 container_of 的非常有用的宏。本文介绍了解 Linux 内核中的 contain…...

003.Linux SSH协议工具

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

web前端组织分析:深入剖析其结构、功能与未来趋势

web前端组织分析&#xff1a;深入剖析其结构、功能与未来趋势 在数字化浪潮的推动下&#xff0c;Web前端组织作为连接用户与数字世界的桥梁&#xff0c;其重要性日益凸显。本文将从四个方面、五个方面、六个方面和七个方面对Web前端组织进行深入分析&#xff0c;揭示其结构特点…...

GitCode热门开源项目推荐:Spider网络爬虫框架

在数字化高速发展时代&#xff0c;数据已成为企业决策和个人研究的重要资源。网络爬虫作为一种强大的数据采集工具受到了广泛的关注和应用。在GitCode这一优秀的开源平台上&#xff0c;Spider网络爬虫框架凭借其简洁、高效和易用性&#xff0c;成为了众多开发者的首选。 一、系…...

实现一个二叉树的前序遍历、中序遍历和后序遍历方法。

package test3;public class Test_A27 {// 前序遍历&#xff08;根-左-右&#xff09;public void preOrderTraversal(TreeNode root){if(rootnull){return;}System.out.println(root.val"");preOrderTraversal(root.left);preOrderTraversal(root.right);}// 中序遍…...

串扰(二)

三、感性串扰 首先看下串扰模型及电流方向&#xff1a; 由于电感是阻碍电流变化&#xff0c;受害线的电流方向和攻击线的电流方向相反。同时由于受害线阻抗均匀&#xff0c;故有Vb-Vf&#xff08;感应电流属于电池内部电流&#xff09;。 分析感性串扰大小仍然是按微分的方法…...

景区网站建设要求/什么是外链

读强一致性支持(待实现)环境准备架构&#xff1a;主&#xff1a;192.168.1.222 从&#xff1a;192.168.1.223 cetus&#xff1a;192.168.1.221数据库对cetus用户授权CREATE database if not exists testdb;create user ‘cetus_app‘‘192.168.1.221‘ identified by ‘cetus12…...

seo网站建设方案/2022社会热点事件及看法

一、前言作为一个Android开发人员&#xff0c;setContentView方法肯定相当不陌生&#xff0c;因为在我们每一个需要呈现页面的Activity的onCreate方法中都会调用setContentView方法来加载我们事先写好的布局文件。然而或许大部分人也和我一样一直都是用用就好&#xff0c;也没有…...

飞色网站商城怎么做/第一站长网

解析器组件源码解析 解析器组件源码解析 1 执行request.data 开始找重装的request中的data方法 2 在dispatch找到重装的requestdef dispatch(self, request, *args, **kwargs):request self.initialize_request(request, *args, **kwargs) ***这里开始找data 3 在initial…...

wordpress后台密码忘记/营销宝

优化之路&#xff1a;精简VB程序的代码Java教程    1.标志符名称  2.注释  3.空行  其他元素&#xff0c;如变量、窗体和过程&#xff0c;确实要占用内存的一部分空间&#xff0c;最好将它们精简以使效率更高。当应用程序作为一个.exe文件运行时&#xff0c;有几项技术…...

网站如何做seo排名/谈谈自己对市场营销的理解

详细连接https://blog.csdn.net/qq_40213457/article/details/81021562https://blog.csdn.net/coolwaterld/article/details/72467942下载不下来&#xff0c;直接利用全部模型有170M&#xff0c;但在线下载速度非常慢&#xff0c;我下了一天一夜才下完。不过现在小伙伴已经将其…...

网站建设依循的原则/同仁seo排名优化培训

PHP 变量命名规则小述 一个良好的命名规则能让代码变得更加清晰流畅&#xff0c;不仅令别人阅读方面&#xff0c;就是自己维护起来也能减少许多麻烦&#xff0c;这里搜集整理了一点关于变量命名的资料一起分享。 string 字符串型&#xff0c;在变量前面加 streg&#xff1a;  …...