ECMAScript 6

let和const命令

1.let的命令作用域值限于当前代码块 即{}中
2.使用let声明作用域不会被提前
3.在相同作用域不能重复声明一个同一个变量
1.const不能被提前声明 属性时值也不能被修改 而对象时可修改值但是不能修改对象的地址
(对于简单的数据如数值字符串等,值就保存在内存地址中 而引用数据类型的数据 常量指向的内存地址只是一个保存对象的地址 const只能保证地址不被改变)
2.const也是块级作用域

3.使用 let 声明的变量 i 具有块级作用域,每次迭代都会创建一个新的变量 i 并绑定到当前循环的值。而在每次循环中,函数表达式被赋值给 arr[i] 时,它捕获并保存了当时的 i 的值。这就意味着每个函数都有自己独立的 i 值,因此调用 arr1 时返回的是函数在创建时捕获的当前 i 值,也就是 1。
    var arr=[];
   for(let i=1;i<10;i++){
        arr[i]=function(){
            return i;
        }
   }
   console.log(arr[1]())

模版字符串

将需要一个html结构插入到网页中 就可以使用这个方法

let htmlstr=`结构 需要变量可使用${}`;

然后追加到html文档上

参数默认值

!!!参数变量是默认声明的 不能使用let和const再次声明
!!!函数不能有同名的参数
!!!参数默认值要放在后面 要不然会报错
es6引入了一个写法 当你带参的方法不需要传参数时 可让形参有个默认值
自己传入的参数等级高 优先使用

function a(b=10,c=10){
//方法体
}

函数也可以作为默认表达式

function add(a,b=a(5)){
	return a+b;
}
function a(b){
	return b+10;
}

解构赋值

完全解构

    let [a,[b],c]=[1,[2,3],4] //数组中的b有用[]括起来的 赋值时也需要 使用[]第一个值进行赋值
    console.log(a,b,c)

不完全赋值

    let [a,[b]]=[1,[2,3],4]
    console.log(a,b) //a=1,b=2

会将第一个值赋给变量

    let [a,,b]=[1,[2,3],4]
    console.log(a,b)

这种写法也会解构成功 我自己理解是根据,而去定位赋值的

使用扩展运算符赋值

    let [a,...b]=[1,[2,3],4]
    console.log(a,b) //a=1.b=[[2,3],4]

解构默认值


    let [a,b=1]=[2]
    console.log(a,b) //a=2,b=1

对象解构赋值

数组的元素是按照次序排序的 变量的取值由他的位置决定的 而对象的属性没有次序 变量需与属性同名才能取到值


let obj={

    name:'小填',
    age:1
}
let{name,age}=obj;
console.log(name,age);

解构数组嵌套对象

//p数组中有个对象 包含着age
let obj={
p:['小填',{age:1}]
   
    
}
let{p:[name,age]}=obj;
console.log(name,age);

不完全解构

//p数组中有个对象 包含着age
let obj={
p:['小填',{age:1}]
   
    
}
let{p:[name,age,z]}=obj;
console.log(name,age,z); name=小填age=1,z=undefined z值未能赋值成功

剩余运算符

//p数组中有个对象 包含着age
let [a,b,...c]=[1,2,3,4,5]
console.log(a,b,c); //a=1,b=2,c=[3,4,5]

解构默认值

let {a=5,b=3}={a:6}//6覆盖5
console.log(a,b); //a=6 b=3

字符串解构赋值

一个一个匹配

let [a,b]="123"
console.log(a,b); //a=1 b=2

函数参数解构赋值

function a([b,c]){
return b+c;
}

console.log(a([1,1]));

rest参数和name属性

rest相当于扩展运算符 这里就不写了
name返回的是一个函数的名字
在es5中返回“”在es6中返回f

箭头函数

为什么有箭头函数呢
就是因为有些函数的作用域是全局 导致this.属性获取不到当前函数属性获取到的是全局的变量 导致为空 因此箭头函数出现了 解决了这个问题 也大大减少了代码量
语法:
(参数1,参数2,…)=>{函数声明}
(参数1,参数2,…)=>表达式(单一)
//当只有一个参数时 圆括号是可选的
(单一参数)=>{函数声明}
单一参数 =>{函数声明}
//没有参数的函数应该写成一对圆括号
()=>{函数声明}

let a=(i)=> console.log(i);   
    a(1)
    -------------------------
   ()=> console.log(1);   

和普通函数的区别

!!!箭头函数的this永远指向当前
!!!箭头函数的arguments有问题 使用扩展运算符获取传入参数值
!!!使用箭头函数 当前失去了作用域链 往上一级寻找
!!!箭头函数不是一个对象 相当于一个语法
!!!箭头函数不能定义构造函数 也不能定义原型方法

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值