ES6自我总结笔记(阮一峰ES6入门)

摘要:
函数参数的默认值、Map结构的遍历以及指定输入模块的方法1。ES6提供了一个新的数据结构,类似于数组,但具有唯一成员且没有重复值2。集合本身是生成集合数据结构的构造函数3。集合结构不添加重复值4。向集合添加值时,不会发生类型转换,这意味着5和“5”是两个不同的值5.集合结构的方法:add,delete,has,clear()6.阵列。from方法可以将集合结构转换为数组,并提供了一种方法来消除数组中元素的重复]variables=newSet;vararray=阵列。类型7.es6的map、键值对和“key”不限于字符串。对象也可以用作关键点。

【let和const命令】

1.var的作用域是函数体内,不是块级作用域

2.let是更完美的var,let的变量的作用是块级作用域

3.let声明的全局变量不是全局对象属性,不可以通过window.变量名的方式访问

4.let声明的变量直到控制流到达该变量被定义的代码行时才会被装载,所以在到达之前使用该变量会触发错误

5.用let重定义变量会抛出一个语法错误(SyntaxError)

6.const声明的变量与let声明的变量类似,它们的不同之处在于,const声明的变量只可以在声明时赋值,不可随意修改,否则会导致SyntaxError(语法错误)

7.const声明后必须要赋值

【变量的解构和赋值】

1.对undefined或者null进行解构,会报错。

var [foo] = undefined //报错
var [foo] = null //报错

  因为解构只能用于数组和对象,其他原始的值都会转换相对应的对象,但是undefined和null不能转换为对象,所以报错。

2.数组结构和对象解构的不同:数组变量的取值是按照位置决定的;对象的变量必须与属性同名才能正确取值

3.JavaScript引擎会将{X}理解成代码块

4.变量解构的用途:交换变量的值,从函数返回多个值,函数参数的定义。函数参数的默认值 、遍历Map结构、输入模块的指定方法

 

【set和map数据结构】

1.ES6提供了新的数据结构,类似于数组,但是其成员是唯一的,没有重复的值

2.set本身是一个构造函数,用来生成set数据结构

3.Set结构不会添加重复的值

4.向set加入值的时候,不会发生类型转换,意味着5和“5”是两个不同的值

5.set结构的方法:add(value),delete(value),has(value),clear();

6.Array.from方法可以将set结构转换为数组,提供了一种去除数组中元素重复的方法】

var items = new Set([1,1,1,2,2,3,4]);
var array = Array.form(items);

7.es6的 map,键值对,“键”的范围不限于字符串,对象也可以当作键。

8.map也可以接受一个数组进行初始化

var map =new Map([["name","张三"],["title","Author"]])
map.size//2
map.has("name")//true
map.get("name")//"张三"

10.map的属性和方法:size、set(key,value)、get(key)、has(key)、delete(key)、clear

11.Map原生提供三个遍历器:

a.keys():返回键名的遍历器

b.values():返回键值的遍历器

c.entries():返回所有成员的遍历器

11.map还有一个foreach的方法,与数组的foreach方法类似,也可以实现遍历,foreach方法可以接受第二个参数,用来绑定this

var reporter ={
      report:function(key,value){
      console.log(key,value);
}
};
map.forEach(function(key,value,map){this.report(key,value);},reporter)

  上面的代码中,forEach方法的回到函数中的this,就是指向reporter的。

12.WeakMAp结构月Map结构基本类似,唯一的却别是它只接受对象作为键名(null除外),不接受原始的类型值作为键名

13.WeakMap的结构有助于防止内存泄漏,因为当对象被回收后,WeakMap自动移除对应的键值对。

14。

【函数的扩展】

1.函数参数的默认值,ES6允许为函数的参数设置默认值,任何带有默认值的参数,都被视为可选参数。不带默认值的参数,则被视为必填参数

2.rest参数:...变量名,rest参数之后不能再有其他参数,否则会报错

3.扩展运算符:是三个点(...),好比rest参数的逆运算,将一个数组转换为用逗号分隔的参数序列。

4.扩展运算符可以简化求出一个数组最大元素的写法

5.箭头函数:var f =v=>v var f=function(v){return v}

6.如果箭头函数不需要参数或需要多个参数,就使用一堆圆括号代表参数部分

7.由于大括号被结束为代码块,因此如果箭头函数直接返回一个对象,必须在对象外面加上括号

8.箭头函数有几个使用注意点:1.函数体内的this对象,绑定定义时所在的对象,而不是使用时所在的对象2.不可以当作构造函数,也就是说,不可以使用new命令,不可以使用arguments对象,该对象在函数体内不存在

【Iterator和for ...of循环】

 1.一个对象只要部署了next方法,就被视为具有iterator接口,就可以用for...of循环遍历它的值,数组原生具备iterator接口

 2.js原有的for...in循环,只能获得对象的键名,不能直接获取键值。(for...in有一个坑:它会把属性一起遍历

var arr=["a",'b','c'];
arr.name="ahhh";
for(var a in arr){
console.log(a);
}
//0
//1
//2
//name
var arr=["a","b","c"];
for(var a of arr){
console.log(a);
}
//a
//b
//c

3.对于Set和Map结构的数据,可以直接使用for...of循环

4.对于普通的对象,for...of结构不能直接使用,否则会报错,必须部署了iterator接口才能使用

5.for ...of的使用范围:数组、类似数组的对象(比如arguments对象,DOM NodeList对象)、Set和Map结构、Generator对象,以及字符串

【对象的扩展】

1.object.is()用来比较两个值是否严格相等。它与严格比较运算符(===)的行为基本一致,不同之处只有两点:一是+0不等于-0,二是NaN等于自身

+0 ===-0//true
NaN === NaN //false

Object.is(=0,-0)//false
Object.is(NaN,NaN)//true

2.Object.assign()、深拷贝(可参考http://blog.csdn.net/waiterwaiter/article/details/50267787)、只对顶层属性做了赋值,完全没有继续做递归之类的把所有下一层的属性做深拷贝。

3.如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

免责声明:文章转载自《ES6自我总结笔记(阮一峰ES6入门)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Qt Widgets、QML、Qt Quick的区别Unity_AssetBundle笔记_(一)(俗称AB包_个人笔记欢迎指正)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

类的加载过程(类的生命周期)详解

3.1. 概述 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。 按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段: 其中,验证、准备、解析3个部分统称为链接(Linking) 从程序中类的使用过程看 大厂面试题 蚂蚁金服...

Oracle中游标的使用

一、 游标的概念:       游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。   二、游标分类:       游标有两种类...

TS Eslint规则说明

"no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 "no-bitwise": 0,//禁止使用按位运算符 "no-caller": 1,//禁止使用arguments.caller或arguments.callee "no-catch-sha...

C#6.0语言规范(十二) 数组

数组是一种数据结构,包含许多通过计算索引访问的变量。包含在数组中的变量(也称为数组的元素)都是相同的类型,这种类型称为数组的元素类型。 数组具有确定与每个数组元素相关联的索引数的等级。数组的等级也称为数组的维度。秩为1的数组称为一维数组。秩大于1的数组称为多维数组。特定大小的多维阵列通常被称为二维阵列,三维阵列等。 数组的每个维度具有相关联的长度,该长度是...

go基础9-并发

并发 并发机制,多goroutine间的共享变量,并发问题的分析手段,解决模式,goroutine和线程区别 竞争条件 并发:无法判断多个事件执行的顺序的情形;并发安全:函数,方法,类型在线性执行或并发执行时,都能正确的返回结果;包级别的导出函数一般都是并发安全的.因为只要让变量不在多个goroutine内共享,它就一定是并发安全的;但是如果存在共享变量,...

vue2.0中实现从对像到数组的转换

一、对像 从后台直接返回的数据,赋值给vue的变量,显示出来如下,它是对像 [ { "被评分人": "15034100248", "问卷ID": "BD20200915170817", "总分": 333, "均分": 83, "计数": 4, "name": "XX1" }, { "被评分人": "13903417124", "问卷ID": "BD202...