ES6新加入的内容(1)

let

1、let 声明变量的一种新的方式
2、用let声明的变量没有变量提升
3、for循环中用let声明 变为块级作用域 可以认为为局部变量
4、let更适用于for循环
5、let 变量不能重复声明
6、暂时性死区 把块级作用域锁死 同名的全局变量不能进入块级作用域(function())

var e=100;
function fun(){
    e=200;
    let e;//暂时性死区  把块级作用域锁死  同名的全局变量不能进入块级作用域(function())
    console.log(3333,e)
}
fun()
var arr=[];
for(let i=0;i<5;i++){
    arr[i]=function(){
        console.log(i);
    }
}
arr[2]()//输出2
arr[3]()//输出3
如果循环用var声明的话  对应上面的3,4条特性看
arr[2]()//输出5
arr[3]()//输出5

constant

constant(常量)

1.const-->constant 常量
2.constant 也是一种新的变量声明方式
3.声明之后 下面不能修改
4.一旦声明,需立即赋值
5.其他与let一致
书写方式:const Pa2=222 //之后在后面就不能更改Pa的值

arrow 箭头函数(=>)

1.箭头函数能保持当前的作用
2.使用箭头函数声明的函数,其作用域为声明时所在的位置(作用域)
3.箭头函数不能使用 new
4.箭头函数内部没有arguments

let obj = {
    name:"sang",
    say:function(){
        console.log(this.name);
        setTimeout(()=>{
            console.log(4444,this.name);//输出为sang 
            //setTimeout()为异步函数 ,其中的this指向的为window,但是箭头函数把作用域固定在了setTimeout内部,所以输出不会变
        },0)
    }
}
obj.say();```

几种箭头函数的使用方式

var foo=()=>10;//简单的return 直接写在后面
console.log(foo());

let bar = (a,b,c)=>abc;
console.log(bar(10,20,1))

let a = (a,b)=>{//复杂逻辑关系要加上{},并且要有return
//只是举个例子
return a+b;
}
console.log(a(22,22))

function b(callback){//有回调函数或者参数时,接收的方式
callback();
}
b(function(){
console.log(111);
})

b(()=>{console.log(2222)})```

你可能感兴趣的:(ES6新加入的内容(1))