es6学习笔记

来源:互联网 发布:淘宝优惠卷群怎么代理 编辑:程序博客网 时间:2024/06/06 11:00

1,对于es6变量声明方式,主要是有了let和const的方式,于let而言,是严格声明变量的,不会存在变量提升的情况,而且会形成一个函数块,绑定里面的数据,一旦在块级作用域的时候没有声明变量就使用会导致错误。let和const也是不可以重复赋值的,const存的是一个内存地址,指向一个对象,可以为这个对象增加属性,但是不可以为const声明的常量赋值,const a = [];a.push("Hello"); // 可执行a.length = 0; // 可执行a = ["Dave"]; // 报错

注意:var a = [];for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10

我的理解是a数组里面存的是console.log(i),而不是console.log(1)等。
2,解构赋值。对象解构赋值和数组一一对应不一样,解构赋值是没有次序先后,只要对象对得上就会有可以赋值。eg:var { bar, foo } = { foo: "aaa", bar: "bbb" },如果对象不一样,就要有别名,bar:baz; 而数组的解构赋值属于模式匹配的原则。let [,,third] = ["foo", "bar", "baz"];另外一种是 let [head, ...tail] = [1, 2, 3, 4];head // 1tail // [2, 3, 4]…把剩下的全都打包。
字符串的解构赋值 const [a, b, c, d, e] = 'hello';
函数的解构赋值,当采取默认值的时候,是赋值对象获得默认值。function move({x = 0, y = 0} = {}) {
return [x, y];
}

3,字符串。首先是扩展自己编码的知识。ASCII是一个字节存的数据,有2的8次方=256种。UNICODE则是用16进制存的数据,由于无法辨认一个编码的整体是3个字节还是3个不同的字节。于是用了UTF8等方式,在第一个自己上记录自己是多少字节的。
这里写图片描述
以上是解决存的问题。js是以utf16存的,又因为8位是一个字节,所以js固定存2字节的数据,所以读取的时候多个字节不能辨认。于是es6提供了codePointAt()的方法来索引转码后的数字。又因为js允许采用“\uxxxx”形式表示一个字符,其中“xxxx”表示字符的码点,默认为4位,当是5位的时候就要用{}进行类似看出一整体的操作"\u{20BB7}" 字符串里面的var name = "Bob", time = "today";
Hello name,howareyou{time}?,用反引号可以在字符串内部进行换行等操作,同时,前面可以跟一个函数名,tagHello ${ a + b } world ${ a * b };,tag函数接收的第一个参数是非模板值,可以用索引来获取值,其他的参数既可以用解构赋值也可以用数组赋值一一对应。
3,数组,
Array.from(arrayLike).map(x => x * x);`

4,函数扩展。fetch(url, { method = 'GET' } = {})函数可以设置默认值。 function add(...values) value是参数集合。rest前面可以有其他参数,后面不可以有其他参数。箭头函数
var f = () => 5;
// 等同于
var f = function (){ return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};

5,Set:add(value):添加某个值,返回 Set 结构本身delete(value):删除某个值,返回一个布尔值,表示删除是否成功。has(value);返回一个布尔值,表示该值是否为 Set 的成员。clear():清除所有成员,没有返回值。
Map:
size:返回成员总数。
set(key, value):设置 key 所对应的键值,然后返回整个 Map 结构。如果 key 已经有值,则键值会被更新,否则就新生成该键。
get(key):读取 key 对应的键值,如果找不到 key,返回 undefined。
has(key):返回一个布尔值,表示某个键是否在 Map 数据结构中。
delete(key):删除某个键,返回 true。如果删除失败,返回 false。
clear():清除所有成员,没有返回值。

剩下的promise,遍历器等有点难了,下次继续(●ˇ∀ˇ●)