【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);
}
//
//
//
//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入门)的更多相关文章

  1. 阮一峰 ES6

    阮一峰 ES6:http://es6.ruanyifeng.com/#docs/module

  2. ES6特性:(阮一峰老师)学习总结

    ES6(阮一峰)学习总结   1.块级作用域的引入 在ES6之前,js只有全局作用域和函数作用域,ES6中let关键字为其引入了块级作用域. { var a = 5; let b = 6; } con ...

  3. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  4. 读阮一峰老师 es6 入门笔记 —— 第一章

    鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ,c ...

  5. 【js 笔记】读阮一峰老师 es6 入门笔记 —— 第一章

      鉴于最近用 vuejs 框架开发项目,其中有很多涉及到 es6 语法不太理解所以便认真地读了一下这本书. 地址:http://es6.ruanyifeng.com/#README 第一章:let ...

  6. es6阮一峰读后感

    不经意间看了你一眼(阮一峰的es6读后感)我自己常用的 字符串篇:ES6 为字符串添加了遍历器接口(详见<Iterator>一章),使得字符串可以被for...of循环遍历.只要有遍历器接 ...

  7. 关于阮一峰老师es6(第三版)中管道机制代码的理解浅析

    最近正在学习阮一峰老师的es6(第三版)教材,在学到第七章<函数的扩展>中的箭头函数嵌套时,文中提到了一个关于“管道机制”的示例,文中源代码如下: //es6(第三版)教材中的管道机制源代 ...

  8. 阮一峰:jQuery官方基础教程笔记

    jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来 ...

  9. 读阮一峰对《javascript语言精粹》的笔记,我有疑问。

    <javascript语言精粹>是一本很棒的书籍,其中作者在附录列出了12种他所认为的javascript语言中的糟粕. 我最近开始跟读前端前辈的博客,其中读到了阮一峰的<12种不宜 ...

随机推荐

  1. visio画图有感

    昨天在和一个同事看流程图,在我还在考虑图的含义时他说这个图太乱了,如果要团队成员看也会很费劲,并找出觉得画的好的案例. 对比两个图我发现了一个最大的差别是好的图形状都是水平或垂直对齐的,连接线也都是水 ...

  2. js 函数问题

    replace() is not a function 1,情景描述:做项目的时候想把内容的某些字符给替换成另外一些字符 2,replace用法:replace() 方法用于在字符串中用一些字符替换另 ...

  3. git 一个分支完全覆盖另一个分支

    1,git push origin develop:master -f就可以把本地的develop分支强制(-f)推送到远程master 2,git checkout master // 切换到旧的分 ...

  4. Nginx、HAProxy、LVS三者的优缺点

    一.Nginx优点: 1.工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名.目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行. 2.Nginx对网络稳定性 ...

  5. go.cd 自动化构建

    go.cd 自动化构建 go.cd 官网 go.cd 文档 go.cd安装 go.cd server go.cd agent go.cd 依赖jdk1.8.可以使用openjdk1.8,也可以使用or ...

  6. PHP chdir函数:改变当前的目录

    PHP chdir函数的作用是改变当前的目录,这里主机吧详细介绍下chdir函数的用法,并列举使用chdir函数的例子. chdir定义和用法: chdir() 函数改变当前的目录. chdir实例: ...

  7. org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.util.HashMap

    这样的配置有问题吗? <select id="getFreightCollectManagementList" resultMap="java.util.HashM ...

  8. javaee_正则表达式基础和常用表达式

    正则基础: 1.1 -字符集 [ ] : 代表单个字符. [^] : 除了该字符外的所有单个字符. [a-zA-Z] : [a-z] || [A-Z]. [a-d[m-p]] :[a, d] || [ ...

  9. python 优先队列

    python 优先队列 from queue import PriorityQueue q = PriorityQueue() q.put((2, 'code')) q.put((1, 'eat')) ...

  10. 2018 pycharm最近激活码

    今天更新了一下pycharm,结果之前的激活就不能用了,下面是新的激活方法: 1.mac下在终端进入etc目录: cd /etc 2.编辑hosts文件: vi hosts 将“0.0.0.0 acc ...