ES6mark

学习猿地 高洛峰 2020‎年‎4‎月‎6‎日,‏‎7:41:58

2020‎年‎4‎月‎6‎日,‏‎10:41:58 暂停

2020‎年‎4‎月‎6‎日,‏‎19:27 暂停

ES6入门

ECMA是 European Computer Manufacturers Association 的缩写

中文称为 欧洲计算机制造联合会

组织的目标是评估,开发和认可电信和计算机标准

ECMA是标准, JavaScript是实现

​ 类似HTML5是标准,IE10、Chrome、FF都是实现

​ 目标是:让前端脚本都实现ECMA

​ 目前是:只有JavaScript实现ECMA标准,ECMAScript≈JS


ES6兼容性解决

kangx.GITHUB.IO/conpat-table/es6/

IE10+、Chrome、FireFox、移动端、NodeJS都支持

兼容低版本

​ 在线转换(这种编译会加大页面渲染的时间)

​ 提前编译(不影响浏览器渲染时间)

​ 比较通用的工具方案(Babel)

使用Bable在线转换解决兼容性问题

直接页面引入browse.js即可


使用Bable提前编译解决兼容性问题

自查资料,略


ES6中的let命令的声明与使用

var特点:

可以重复声明

无法限制修改

不具有块作用域

let特点

不能重复声明

具有块级作用域,只在let命令所在的代码块内有效

let 声明

let a = 10;


ES6中的const命令的声明与使用

const PI = 3.1415926;

const声明的是常量

不能够修改内存地址

不能稍后赋值

不能重复声明

必须立即初始化

具有块级作用域


ES6中的箭头函数的声明与使用

let f = v => v*v;

v就是形参

v*v就是返回值

let f= function(v){

​ return v*v;

}

单参数与多参数写法示例:

let f =v => v*v;

let f =(v,a) => v*a;

多条语句写法(后面加花括号):

let f = v => {xxx ; return v*v}

总结:

ES6允许使用箭头=>定义

不需要参数或需要多个参数,就用圆括号代

代码块部分多与一条语句,就用大括号括起来,并且用return返回

如果返回的是对象,则后面必须加括号()把对象括起来

箭头函数使得表达更加简洁

箭头函数能够简化回调函数


箭头函数中this的指向

箭头函数没有自己的this,导致内部的this就是外层代码块的this


ES6数组的新方法

map() 进去多个出来多个,映射

reduce() 进去多个出来一个,汇总

filter() 过滤器

forEach() 循环(迭代),遍历

some() 一个为true 就会返回true

every() 必须所有都返回true才会返回true


ES6中的模板字符串和字符串中新增的方法

变量名.startsWith(“xx”) 判断变量值是否以特定xx开头

变量名.endsWith(“xx”) 判断变量值是否以特定xx结尾

模板字符串:不同于普通字符串需要链接的方式

​ 而是加上 ` 反引号 可以不用+号拼接了

​ 变量用 ${变量名}

​ 是增强版的字符串,可以用作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量


函数的参数三点运算符号

如形参的省略,不需要写上具体的形参数量 …arr

但需注意只能接收剩余参数,不能在他后面再放变量,只在前面放

let arr=[1,2,3,4];

let arr2=[5,6,7,8];

let narr=[…arr,…arr2];

console.log(narr);

console.log(…arr,…arr2,…narr);打印输出看结果,此处略

声明默认参数:也和三点运算符号一样放在后面,不放前面


解构赋值,如–1,–2, --4 ,–5是典型应用

特点:

左右两边结构必须一样

右边必须有值

声明和赋值不能分开

作用:

简化赋值,不用一个一个给变量赋值

let arr=[1,2,3];

let a=arr[0];

let b=arr[1];

let c=arr[2];

let [a,b,c] = [1,2,3]; —1

let {a,b,c} = {“a”:1,b:2,c:3}; —3

let [a,b,c] = arr; —2

console.log(a,b,c);

let [a,b,{c,d},[e,f],g,h]=[1,2,{c:3,d:4},[5,6],7,8];–4

console.log(a,b,c,d,e,f,g,h);

let [a,b,c,e,g,h]=[1,2,{c:3,d:4},[5,6],7,8];–5

console.log(a,b,c,e,g,h);打印输出看结果,此处略


ES6中的class类的声明

class Person{

​ constructor(name,age){

​ this.name=name;

​ this.age=age;

​ }

​ say(){

​ console.log(“xx”);

​ }

}

let p =new Person(a,b);

p.say();


ES6中的class的继承

Tearcher直接继承Person的属性和方法

class Tearcher extends Person{

​ constructor(xx,xx,xx){

​ xxx

​ };

​ study(){xxx};

}

let t = new Teacher(xx,xx,xx);


ES6中JSON的应用

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式

JSON的标准格式:

属性双引号,外面单引号

let obj = ‘{“a”:1,“b”:“abc”,“c”:true}’;

JSON对象

JSON.stringify() 串行化

JSON.parse() 反串行化

简写

属性和值,名字一样可以简写

方法一样可以简写


ES6中的Promise的应用

Promise简单说就是一个容器,里面保持着某个未来才会结束的事件

通常是一个异步操作–接口–Ajax-setTimeout-img的结果

ES6规定,Promise对象是一个构造函数,用来生成Promise示例

Promise构造函数接收一个函数作为参数

该函数的两个参数分别是resolve和reject 他们是两个函数,由JavaScript引擎提供,不用自己部署

resolve函数的作用是,将Promise对象的状态从未完成变为成功

在异步操作成功时调用,将异步操作的结果作为参数传递出去

reject函数的作用是xxx


ES6中的generator的应用

function * demo(){

​ console.log(“1”);

​ yield

​ console.log(“2”);

​ yield

​ console.log(“3”);

}

let genobj = demo();

genobj.next();

genobj.next();

genobj.next();

话不多说,运行代码自己看,这种形式就是generator函数

传参使用:

function * demo(){

​ console.log(“1”);

​ let a = yield

​ console.log(“a”);

​ let b = yield

​ console.log(“b”);

}

let genobj = demo();

genobj.next();这时启动调用,传参无效

genobj.next(20); 这对应第一个yield

genobj.next(30);这对应第二个yield

返回值使用:

function * demo(){

​ console.log(“1”);

​ let a = yield ‘aa’

​ console.log(“a”);

​ let b = yield ‘bb’

​ console.log(“b”);

}

let genobj = demo();

let a = genobj.next();这时启动调用,传参无效

let b = genobj.next(20); 这对应第一个yield

let c = genobj.next(30);这对应第二个yield

console.log(a,b,c); 可以依据返回的对象的done判断是否执行完


ES6中的Map数据结构

Map数据结构类似于对象,是键值对的集合

传统的键只能用字符串,Map的键不限于字符串

各种类型的值(包括对象)都可以当作键属性和操作方法

size属性:

存储的是Map结构的成员总数

set(key,value)方法:

设置键名key对应的键值为valu然后返回整个Map结构

如果key已经有值,则键值会被更新,否则就新生成该键

示例:

const a = new Map();

a.set(‘foo’,true);

a.set(222,‘standard’);

a.set(undefined,234);

或者连写 let map = new Map([‘a’,‘11’],[xx,xx],[xx,xx])

或者a.set(‘foo’,true)

​ .set(‘foo’,true);

​ .set(‘foxo’,true);

a.size // 3

a.clear() 全部清空

a.delete(xx) 删除

a.has(zz) 是否存在


ES6中的模块化export , import
导出nihao.js:

export xxx1;

export xxx2;

export{xxx1;xxx2};

export{xxx1 as myxxx1};

或者默认导出:export default function(){return “this is a test”}

一个JS模块只能有一个默认导出,就是导入未指定就是这个默认导出

导入buhao.js:

import{xxx1,xxx2,myxxx1} from “./nihao.js”

console.log(xxx1,xxx2,myxxx1)

import * as nihaoaa from “./nihao.js”

console.log(nihaoaa.xxx1,nihaoaa.xxx2,nihaoaa.myxxx1)

import myff from “./nihao.js”

import myff ,{url as aurl,name as aname}from “./nihao.js”

解决多个模块重名冲突问题

引入index.html:
Module模块化有点

减少命名冲突,避免引入时的层层依赖,提升执行效率


完结事件 2020-4-7-12-50

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值