《ES标准入门》&《UNDERSTANDING ECMACHRIPT 6》 读书摘录笔记(上)
### 前言
*这两本书应该是目前ES6相关的比较好的了,网上有电子版本(文末有链接)。不过我买了书看,哈哈。这两篇摘录笔记分为上下两部分,本文是上半部分(1-6章),摘录了两本书里一些比较有用的知识点。*
### 目录
> #####1. 块级作用域绑定
> #####2. 字符串与正则表达式
> #####3. 函数的扩展
> #####4. 数组的扩展
> #####5. 对象的扩展
#####6. 集合(Set、Map)
> 7 . Symbol和Symbol属性
>
> 8 . Javascript中的类
>
> 9 . Promise、Generator函数、Async函数
>
> 10 . 代理(Proxy)和反射(Reflection)API
>
> 11 . 修饰器
>
> 12 . Module
### 一、块级作用域绑定
块级声明用于声明在指定块级作用域之外无法访问的变量。块级作用域存在于:1、函数内部;2、块中(字符'{'和'}'之间的区域)。Es6 中存在的两种变量声明就是Let和Const声明。
值得摘录的有以下六点:
##### 1. 不能重复声明
var count = 9;
//抛出语法错误
let count = 7;
##### 2. Const常量声明必须进行初始化
const age = 8;
//语法错误:常量未初始化
const name;
##### 3. 特殊的For循环
For循环设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
for(let i = 0;i< 3;i++){
let i = 'can not change';
console.log(i);//输出'can not change'
}
##### 4. 暂时性死区
在区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭的作用域。只要在声明之前就使用这些变量,就会报错。
情况一:
var tmp = 123;
if(true){
tmp = 'abc';//ReferenceError
let tmp;
}
情况二:
function test(x = y,y = 2){
return [x,y];
}
test();//报错
情况三:
let x = x;//ReferenceError: x is not defined
##### 5. Const声明对象,对象属性可变
##### 6. 彻底冻结函数
constantize(obj) {//彻底冻结函数
Object.freeze(obj);
Object.keys(obj).forEach((key, i) => {
if (typeof obj[key] === 'object') {
constantize(obj[key]);
}
})
obj.name = 777;//TypeError: Cannot add property name, object is not extensible
return obj;
}
### 二、字符串与正则表达式
Es6加强了对Unicode的支持,并且扩展了字符串对象。正则表达式则增加了修饰符和属性。
值得摘录的有以下几点:
##### 1. codePointAt()与String.fromCodePoint()方法
完全支持UTF-16,接受编码单元的位置而非字符位置作为参数,返回与字符串中给定位置对应的码位,即一个整数值:
var text = "
上一篇: 不花一分冤枉钱 市售低价4G双卡手机推荐
下一篇: 支持快速充电的5口USB充电器