ES6基础

一、let和const
ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。

let用法let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
不存在变量提升
不允许重复声明
for 循环计数器很适合用 let
暂时性死区
//for循环计数器
for (var i = 0; i < 10; i++) {  //i为全局变量
  setTimeout(function(){
    console.log(i);
  })
}
// 输出十个 10
 //j每次循环都是一个新的变量
for (let j = 0; j < 10; j++) {  
  setTimeout(function(){
    console.log(j);
  })
}
// 输出 0123456789
//暂时性死区
var tmp = 123;
if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}
const用法常量声明
注意声明对象时,只能保证对象指针地址不变,对象自身的改变不会因此影响
暂时性死区

二、解构赋值
1.数组的解构赋值,按照顺序解构,赋值给前面对应下标的变量。

let [a,b,c]=[1,2,3];//a为1  b为2  c为3
let [a, b = 1] = [3];//a为  b取默认值1
let [a, b = 1] = [3, 4]; //a为3 b为4  有自定义的值,以自定义值为准

let c;
let [a = 3] = [c]; //如果有默认值,同时有自定义值,但自定义为undefinded时,以默认值为准

2.对象解构赋值,按照属性名解构,与顺序无关。

let{a,b}={a:1,b:2};// 1   2

如果变量名与属性值不一致,下面这种写法会报错

let {
             a: b
         } = {
             a: 1 
         };
  //b ,1
 //a报错,a is not defined
//这种写法是正确的
 let {
            a: a,
            b: b
        } = {
            a: 1,
            b: 2
        }
  //a  1,b  2              

也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
3.字符串解构赋值,字符串被转换成了一个类似数组的对象。

let [a,b,c,d,e]="abcde";

类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值,如:

let {length : len} = 'hello';
// len   5

4.函数参数解构赋值

function add([x, y]){
  return x + y;
}

add([1, 2]);

使用解构赋值让函数具有默认值

function foo(domobj, width = 100, height = 100) { //参数默认值,传实参用实参,不传实参用默认
            domobj.style.display = "block";
            domobj.style.width = width + "px";
            domobj.style.height = height + "px";
        }
        var oDiv = document.querySelector("div");
        foo(oDiv, 200, 200);

5.解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。
三、字符串扩展方法

字符的 Unicode 表示法“\u0061”
includes是否含有某字符,返回布尔值str.includes(“a”)
startsWith()表示参数字符串是否在原字符串的头部str.startsWith(“a”)
endsWith()表示参数字符串是否在原字符串的尾部str.endsWith(“a”)
repeat()表示将原字符串重复几次,返回新的字符串str.repeat(3)
padStart()从字符串头部添加字符,添加几位str.padStart(10, “0”)
padEnd()从字符串尾部添加字符,添加几位str.padEnd(10, “0”)

-----模板字符串
外部用反引号,反引号内如果需要使用变量${变量名}

let n=3;
console.log(`a${n}b`)
注意这里的字符串使用``将里面引住

四、数组扩展方法

扩展运算符… 将伪数组转换成真正的数组

let aDivs = document.getElementsByTagName("div");
aDivs = [...aDivs]; //将伪数组转换成真正的数组
aDivs = Array.from(aDivs); //将伪数组转换成真正的数组


console.log(Array.of(1, 2, 3)); //将参数序列变成数组
 console.log(Array.isArray([1])); //判断参数是否是一个数组

五、set和map
1.set是一个不能有重复元素的集合,重复添加无效

//数组去重
var arr = [11, 1, 1, 2, 2, 1, 3];
 let set = new Set(arr);
 console.log(set);//11,1,2,3

 //for of 是ES6新增遍历方式
 //for of不能用来遍历对象,对象仍然使用for in遍历
         for (let i of set) {
             console.log(i); //i表示set里的值
         }

2.set操作

add(value)添加元素
delete(value)删除元素
has(value)判断是否是成员
clear()清除所有数据

3.Map的提出为了解决js中object(对象=>{key:value})中键(key)只能是字符串的限制,Map的键(key)可以是各种类型的值(包括对象)都可以当作键(key),包括es6提出的Set和Map都可以用来生成新的 Map。

let b=new Map();
 b.set("name","xie");
 b.set("age",18);
 console.log(b);
 //Map(2) {"name" => "xie", "age" => 18}

——属性和操作方法
(1)size 属性:size属性返回 Map 结构的成员总数
(2)set(key, value):set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。(set方法返回的是当前的Map对象,因此可以采用链式写法。)
(3)get(key):get方法读取key对应的键值,如果找不到key,返回undefined。
(4)has(key):has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
(5)delete(key):delete方法删除某个键,返回true。如果删除失败,返回false。
(6)clear():clear方法清除所有成员,没有返回值。
——遍历方法
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历 Map 的所有成员。

六、箭头函数

var fn=( )=>{ }
1.参数()如果没有参数或有两个及以上参数,需要写括号,并将参数放入括号
如果只有一个参数,不需要加括号
2.=>参数与函数体部分,意思是讲函数带入到函数中
3.函数语句块{ }如果函数语句块不加{ },并且只有一句话,就意味着使用return返回这句话
4.箭头函数都是匿名函数
5.this指向使用箭头函数以后,this被重新指向当前箭头函数外this的指向

七、symbol
symbol 新增的一种基本数据类型 symbol类型值是唯一的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值