-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
《ECMAScript 6 入门 第二版》读书会笔记 #8
Comments
chapter1:GET:1. 使nodejs环境支持ES6语法,并进行调试。 2. 运行Webpack环境,并进行es6代码的调试 Q:
chapter2:GET:
3.块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了。
|
1、babel5版本默认包含各种转换插件,然而babel6.X相关转换插件需要自己下载。 babel-preset-es2015包含了所有插件,因此需要安装之后才能使用babel做到转换。但是babel只能转换ES6的语法,不能转换新的API,如Promise已经一些定义在全局上的方法例如:Object.assign。这时就得通过别的方法:1、babel-runtime 2、bable-polyfill chapter3 2、在es6内部使用严格相等运算符,判断一个位置是否有值。所以一个数组成员不严格等于undefined,默认值是不会生效的。 对象的解构赋值的内部机制,是先找到同名属性,然后再赋值给对应的变量。真正被赋值的是后者,而不是前者。 |
第二章 let和const命令let const const用来声明常量。一旦声明,其值就不能改变,一旦声明必须立即初始化,不能留到以后赋值 let,const,class 声明的全局变量不属于全局对象的属性 第三章 变量的解构赋值解构:es6允许按照一定模式,从数组或对象中提取值,对变量进行赋值 数组的解构 1、解构失败时,不成功的值等于undefined 对象的解构 对象的解构赋值:先找到同名属性,然后再赋给对应的变量 数值和布尔值的解构会转为对象 undefined 也会触发函数参数的默认值 解构的用途: |
Get: 3、E C M A S c r i p t和 J a v a S c r i p t的关系是 ,前者是后者的规格 ,后者是前者的一种实现 4、E S 6明确规定 ,如果区块中存在 l e t和 c o n s t命令 ,则这个区块对这些命令声明的变量从一开始就形成封闭作用域 。只要在声明之前就使用这些变量 ,就会报错 。这在语法上称为 “暂时性死区 ” ( t e m p o r a l d e a d z o n e ,简称 T D Z ) 。暂时性死区的本质就是 ,只要一进入当前作用域 ,所要使用的变量就已存在 ,但是不可获取 ,只有等到声明变量的那一行代码出现 ,才可以获取和使用该变量 。 5、l e t不允许在相同作用域内重复声明同一个变量 。 6、需要注意的是 ,如果在严格模式下 ,函数只能在顶层作用域和函数内声明 ,其他情况 (比如 i f代码块 、循环代码块 )下的声明都会报错 。 7、对于复合类型的变量 ,变量名不指向数据 ,而是指向数据所在的地址 。 c o n s t命令只是保证变量名指向的地址不变 ,并不保证该地址的数据不变 ,所以将一个对象声明为常量必须非常小心 。 8、E S 5只有两种声明变量的方法 : v a r命令和 f u n c t i o n命令 。 E S 6除添加了 l e t和 c o n s t命令 ,后面章节还会提到另外两种声明变量的方法 : i m p o r t命令和 c l a s s命令 。所以 , E S 6一共有 6种声明变量的方法 。 9、const 用来 声明 常量。 一旦 声明, 其 值 就不 能改变。 |
4 字符串扩展理解使用场景。 考虑一些不能被unicode识别的中文,需要用codePointAt()\fromCodePoint()\At()\遍历器接口;
重复字符串的方法:repeat 使用方法: 字符串补齐:
模板字符串-我喜欢。。 老:
新:
当然这样就不可避免的出现行内的空格和行首行尾的空格,行尾行首可以用 trim 去掉~
模板引用变量的方式,可以联想trimpath、vm的语法,类似~
嵌套方式:
Q: 数组的扩展Array.from方法用于将两类对象转为真正的数组:类似数组的对象( array-like object )和可遍历( iterable )的对象(包括 ES6 新增的数据结构 Set 和 任何有length属性的对象,都可以通过Array.from方法转为数组,而此
可以批量给素材改样式么。。
扩展运算符的功效:
替代方案:
把一组值转化成数组是弥补数组构造函数Array()的不足
数组的copyWithin
数组实例的find方法,用于找出第一个符合条件的数组成员。
fillfill方法使用给定值,填充一个数组。
遍历数组entries(),keys()和values()
includesArray.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。
indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于 -1 ,表达起来不够直观。二是,它内
|
Chapter 4:字符串的扩展
Chapter 7:数组的扩展
function foo() { |
字符串的扩展1.includes(),startsWith(),endWith() 2、repeat方法返回一个新字符串,表示将原字符串重复n次 3、padStart().padEnd() 4、模板字符串 数组的扩展1、Array.from() 2、Array.of():将一组数值转换为数组 3、copyWithin(),复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小,会修改原数组 4、 find() 方法返回数组中满足提供的测试函数的第一个元素的值 5、fill()方法,使用给定值填充数组 6、数组实例的entries()、keys()、和values()方法,主要用来遍历数组,keys()是对键名的遍历,values()是对键值的遍历,entries()是对键值对的遍历
7、Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值 |
函数的扩展rest参数
合并数组
箭头函数 |
1、ES5只能使用 var obj = {foo:true} es6可以 let a = 'a' let obj = {[a]:true} //属性简洁表示法 |
对象的扩展1、对象中允许只写属性名,不写属性值,属性值等于属性名代表的变量
4、Object.assign() 将源对象的所有的可枚举属性复制到目标对象
|
1.ES6允许在对象之中, 只写属性名, 不写属性值。 这时, 属性值等于属性名所代表的变量。 |
Set 和Map 数据结构属性和方法
遍历操作
由于Set结构没有键名,只有键值,所有keys和values方法的行为完全一致 遍历中需要改变Set结构 let set4 = new Set([1, 2, 3]); 不重复的值得集合,成员只能是对象,不能是其他类型的值,WeakSet的对象都是弱引用,成员无法引用,不可遍历 Map Map 类似于对象,也是键值对的集合,“键” 的范围不限于字符串,可以是各种类型的值(包括对象) Map 也可以接受一个数组作为参数,该数组的成员是一个个表示键值对的数值 如果对一个键多次赋值,后一次的值会覆盖前一次的值 实例的属性和操作方法
遍历操作
与其他类型数据结构的互相转换 var map = new Map([["name", "张三"], ["title", "Author"]]) |
1、set内部认为两个NaN是相等的 |
Set 和 Map1. setG:
Q:1.对于dom的遍历
[document.querySelectorAll('div')] 和 [...document.querySelectorAll('div')] 的区别
key方法、 value方法、 entries方法返回的都是遍历器对象( 详见《 Iterator对象》 一章) 。 由于Set结构没有键名, 只有键值( 或者说键名和键值是同 2. MapG:
Q:
var keyObj = {}, // 添加键 |
Get有三类数据结构,自带Iterator神器。for of 默认会遍历。 let arr = ['a', 'b', 'c']; 字符串的遍历器接口 遍历器-线性处理。部署遍历器接口就是部署一种线性转换。 |
1、 for in 不适合遍历数组 适合遍历对象。 对象部署遍历器接口不是很必要,因为这时对象实际上被当做map结构使用,那么能不能像类数组对象调用数组的Iterator方法一样,为对象调用例如map这样的数据结构的Iterator方法? |
GET |
1、Generator函数是一个状态机,封装了多个内部状态。执行Generator函数会返回一个遍历器对象,依次遍历Generator内部的每一个状态/1、分段执行 2、可以控制阶段和每个阶段的返回值 3、可以知道是否执行到结尾。 |
Generator 函数返回遍历器对象,只有调用next方法才会遍历下一个内部状态。yield表达式 暂停表达式 |
1、Genetator函数返回的是一个状态机,因此没有this对象,想要调用this则需要动态绑定 |
|
No description provided.
The text was updated successfully, but these errors were encountered: