Es新规范-总结(Es5-Es10)

Es新规范之我的es学习笔记

变量:letvar

1.在循环中使用的变量.
使用 var 时重新声明了循环之外的变量(循环内外的作用域不同,相同变量的值也不同).
使用 let 并没有重新声明循环外的变量 ( 如果在循环中用 let 声明了变量 i,那么只有在循环内,变量 i 才是可见的)

2.在函数内声明变量时,使用 var 和 let 很相似。

3.在 HTML 中,全局作用域是 window 对象。通过 var 关键词定义的全局变量属于 window 对象:可使用 window.carName;通过 let 关键词定义的全局变量不属于 window 对象;

4.允许在程序的任何位置使用 var 重新声明 JavaScript 变量;
在相同的作用域,或在相同的块中,通过 let 重新声明一个 var 变量是不允许的,通过 let 重新声明一个 let 变量是不允许的;

5.通过 var 声明的变量会提升到顶端,可在声明语句之前使用变量;而let不会提升到顶端;

常量 const

6.const 变量必须在声明时赋值.const定义了对值的常量引用,而非常量。因此,我们不能更改常量原始值,但我们可以更改常量对象的属性。
1.将一个原始值赋给常量const PI = 3.141592653589793后,就不能改变原始值;
2.常量为对象时,可以更改(数组);

7.通过 const 定义的变量不会被提升到顶端。
当使用常量 const 声明时,使用大写变量,如:CAPITAL_CASING

8.Number.isSafeInteger() 方法
安全整数是可以精确表示为双精度数的整数。安全整数指的是从 -(253 - 1) 到 +(253 - 1) 的所有整数。

函数操作

  1. 设置默认参数
  2. 延展参数转化
  3. 箭头函数

9.设置默认参数: ES6 允许函数参数具有默认值。

function myFunction(x, y = 10) {// y is 10 if not passed or undefinedreturn x + y;
}
myFunction(5); // 将返回 15
myFunction(6,1);// 将返回 7

10.箭头函数(Arrow Function)
.箭头函数注意点:
1)多个参数要用()包起来,函数体有多条语句需要用{}包起来,有返回值时,需要添加return;
2)箭头函数根本没有自己的this,所以内部的this就是外层代码块的this。 正是因为它没有this,从而避免了this指向的问题;
3)箭头函数中没有arguments对象。

  // ES5函数
var x = function(x, y) {return x * y;
}// ES6箭头函数
const x = (x, y) => x * y;// ES6 如果函数是单个语句,则只能省略 return 关键字和花括号。因此,保留它们可能是一个好习惯:
const x = (x, y) => {return x ** y;
};

11.将变量声明为一个函数:
将一个变量或常量声明为一个函数,等于声明了一个名为该变量或常量的函数

let getPrice = function() {return 4.55;
};
let getPrice = () => 4.55; // 箭头函数 返回值:4.55;const a = ()=>{console.log('aaa');
};const b = (value='bb')=>{console.log(value);
};a();
b('b11');

12.箭头函数中的|this| 指向 person 对象: this.age++;

ES语法中对象操作

13.简写

function getCar(make, model, value) {return {// 简写变量make,  // 等同于 make: makemodel, // 等同于 model: modelvalue, // 等同于 value: value// 属性可以使用表达式计算值['make' + make]: true,// 忽略 `function` 关键词简写对象函数depreciate() {this.value -= 2500;}};
}

14.模板语法和分隔符 1. ${} 用来渲染一个变量 2.` 作为分隔符

  let user = 'Barret';console.log(`Hi ${user}!`); // Hi Barret!

15.迭代器
for…of 用于遍历一个迭代器,如迭代数组;for…in 用来遍历对象中的属性.

for (let nickname of/in nicknames) {  // of迭代数组,in遍历对象中的属性console.log(nickname);
}

16.ES6 中两种新的数据结构集:Map 和 WeakMap。
Map:一个对象由多个 key-val 对构成,在 Map 中,任何类型都可以作为对象的 key;
WeakMap:key 弱引用,WeakMap 中的东西垃圾回收时不考虑,使用它不用担心内存泄漏问题。另一个需要注意的点是,WeakMap 的所有 key 必须是对象。它只有四个方法 delete(key),has(key),get(key) 和set(key, val).

数组操作

let newArr = Array.from(oldArr); // 浅拷贝
console.log(newArr === oldArr); // falseconsole.log(Array.of(8));  //[8]console.log(Array.of(1, 2, 3));  // [1, 2, 3]console.log(Array(8));  // [ , , , , , , ] 为8个长度的数组console.log(Array(1, 2, 3));  // [1, 2, 3]

17.循环:forEach() 和 map()
循环时,首先做判断,在 object.a 值满足做循环时,再做循环.
在map()里不能做异步的操作.

18.ES6:类中的继承和超集
extends 允许一个子类继承父类,子类的constructor 函数中需要执行 super() 函数,可以在子类方法中调用父类的方法,如super.parentMethodName()。
有几点值得注意的是:
类的声明不会提升(hoisting),如果你要使用某个 Class,那你必须在使用之前定义它,否则会抛出一个 ReferenceError 的错误
在类中定义函数不需要使用 function 关键词

19.Promises

 ES6 对 Promise 有了原生的支持,一个 Promise 是一个等待被异步执行的对象,当它执行完成后,其状态会变成 resolved 或者 rejected。每一个 Promise 都有一个 .then 方法,这个方法接受两个参数,第一个是处理 resolved 状态的回调,一个是处理 rejected 状态的回调:如果一切都正常,则调用 resolve,否则调用 reject。
  promise.then(Resolved, Rejected); ===> promise.then(Resolved).catch(Rejected);promise.then((val) => console.log("Promise Resolved", val), // 处理 resolved 状态的回调 -> 正常状态(err) => console.log("Promise Rejected", err));  // 处理 rejected 状态的回调 -> 不正常状态

Promise 对象代表一个异步操作,有三种状态:
Pending: 初始状态,不是成功或失败状态。
Resolved(onFulfilled): 意味着操作成功完成。
Rejected: 意味着操作失败。
Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。

20.链式操作

  getJSON(url).then(()=>{}).then(()=>{});

上面的代码使用 then 方法,依次指定了两个回调函数。第一个回调函数完成以后,会将返回结果作为参数,传入第二个回调函数。
如果前一个回调函数返回的是Promise对象,这时后一个回调函数就会等待该Promise对象有了运行结果,才会进一步调用。

21.Promise.prototype.catch方法:捕捉错误

  1. getJSON(url).then(()=>{}).catch(()=>{}); //捕捉回调函数中的错误
    Promise 对象的错误具有"冒泡"性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个 catch 语句捕获。
  2. getJSON(url).then(()=>{}).then(()=>{}).catch(()=>{}); // 捕捉2个回调函数中的错误–Promise对象的错误具有"冒泡"性质,会一直向后传递
    3.getJSON(url).then(()=>{}).then(()=>{}).catch(()=>{}).finally(()=>{});

22.延展数组 =>合并两个数组为一个新的数组

 let arr1 = [ 'a', 'b', 'c'];let arr2 = [1, 2, 3];let result = [...arr1, ...arr2];   //  [ "a", "b", "c", 1, 2, 3 ]

23.延展对象=> 合并两个对象为一个新的对象

 let smallDog = {name:'小煤球', age: 1};let bigDog = {name: 'Python', age: 2}; // 如果对象中的属性一致, 会被覆盖let dog = {...smallDog, ...bigDog}; // {name: "Python", age: 2}  浅拷贝

Es新规范-总结(Es5-Es10)相关推荐

  1. PKPM 2013建筑结构设计软件+2014加密锁有驱狗+新规范2010

    韩国稀科SecoCAD V2.0 中文版 可与AutoCAD 2008.2006.2005.2004以及2002之前(含2002)版本随意互换 使用与AutoCAD相同的命令语,且支持dwg文件格式 ...

  2. 地铁车站疏散指示系统新规范标准

    随着国家对消防设计重视程度的提高,2019年3月1日起实施的GB51309-2018<消防应急照明及疏散指示系统技术标准>(简称"<应急照明标准>")对消防 ...

  3. 新规范关于工程总承包项目组织机构的设置及岗位解读

    摘要:系统目标决定系统组织,而组织是目标能否实现的决定性因素.本文以不同发展时期的两份国家标准为研究对象,剖析<建设项目工程总承包管理规范>中关于项目管理组织机构的条文论述和规范要求,简析 ...

  4. 将来用NFC也能付支付宝、微信里的钱?NFC Forum发布一项新规范

    近日,据NFCworld报道,NFC Forum发布了一个新的候选规范,使得基于二维码的移动支付服务更容易添加NFC功能,让支付服务供应商和消费者有机会利用简单.安全的基于NFC的支付解决方案在全球范 ...

  5. 公路多孔箱涵设计_新规范箱涵结构设计(2010年7月)

    1 .孔径及净空 约定: 净跨径 L 0 = 3.0 m 1.轴向力以杆件受压为正. 净高 h 0 = 2.5 m 2.弯矩以使箱涵内框一侧受拉为正. 2 .设计安全等级 三级 3.截面剪力:使计算截 ...

  6. JS新规范padStart()详解,自己实现一个简单的padStart()

    目录 padStart() 介绍 语法 参数 targetLength padString 可选 返回值 用法 用法1 使用2 使用3 使用4 正常使用 性能优化方案 问题简介 Mr Zhou的实现 ...

  7. js的规范写法ES5(自己以后按照这样写)

    1.引号的使用,单引号' ' 优先(如果不是引号嵌套,不要使用双引号) 正常情况:console.log('hello there')        双引号转码: $("<div cl ...

  8. 【Elasticsearch】es 新的 数据类型 search_as_you_type

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 可以加我问问题,免费解答,有问题可以先私聊我,本人每天都在线,会帮助需要的人. 但是本博主因为某些原因, ...

  9. 公路多孔箱涵设计_新规范双孔箱涵结构设计

    1 .孔径及净空 净跨径 L 0 = 4 m 净高 h 0 = 2.5 m 孔数 m= 2 2 .设计安全等级 一级 结构重要性系数 r 0 = 1.1 3 .汽车荷载 荷载等级 公路 - Ⅰ级 4 ...

最新文章

  1. SAP LSMW 物料主数据导入毛重净重放大1000倍问题之对策
  2. 对OCR文字识别软件进行自动分析和识别设置的教程
  3. 字体渲染 mac linux,Mac下通过命令来渲染字体
  4. 为什么使用 Vuetify?
  5. Ubuntu 安装 Vue.js
  6. 动态添加input_前端提效必备:动态模版生成
  7. php yaf框架和icon,php中Yaf框架是什么?
  8. python执行原理是什么意思_简述Python程序的执行原理。
  9. 学习shell script
  10. 【演化(进化)算法】遗传算法原理及python实现
  11. Java入门基础第3天《使用记事本编写运行Java程序》
  12. (实测)天猫商城抢购茅台脚本
  13. python中idle环境的退出命令的快捷键_IDLE环境的退出命令是( )。_学小易找答案...
  14. skl pipline 运行流程演示
  15. 拥有70多个名字的南京,改城市名就像改微信名一样
  16. uniApp uview图片懒加载
  17. wordpress图像大小_为WordPress优化图像
  18. TensorFlow2.8.0报错TypeError: Descriptors cannot not be created directly.
  19. Android Pixel手机Notification小图标显示白方块问题
  20. 你不可不知的Java引用类型之——SoftReference源码详解

热门文章

  1. C++ 多态虚函数常见问题
  2. 显卡结构及工作原理详细解读
  3. Ansys Speos | 联合 optiSLang 背光板设计优化方案
  4. 建筑艺术与数据科技完美融合 全球最美的十大数据中心
  5. HIT 软件构造 bug debug
  6. 让你彻底搞懂IP地址
  7. txt的数据导入excel中身份证或银行卡显示成科学计数如何解决
  8. macbook 安装virtualbox ubuntu
  9. ubuntu16.04:制作gif图片
  10. Hadoop常用的操作指令速查和讲解