es6学习入门

一、定义变量

1、let:

//1、不进行预解释,但是编译时会优先过滤一遍
    let a=0;
    {
        console.log(a); //a is not defined,块级作用域中已经过滤到a,但是这个时候未定义
        let a=1;
    }
//2、同一个作用域下面不可重复定义,不同作用域下面是不同变量
let a = 0;
//let a=1;
//console.log(a) // 'a' has already been declared ,已经被声明
{
    let a = 1;
    console.log(a) //1,不同作用域下面属于不同变量。
}
console.log(a) //0,获取的是全局a
//3、块级作用域
for(var i = 0; i < 4; i++) {
    setTimeout(function() {
        console.log(i) //4,4,4,4   因为setTimeout和事件绑定都是异步
    }, 0)
}
for(let i = 0; i < 4; i++) {
    setTimeout(function() {
        console.log(i) //0,1,2,3  //每个for循环变量i作用域都不同
    }, 0)
}

2、const:定义常量

//1、声明时必须赋值
const a; //Missing initializer in const declaration
//2、不能重复定义
const a=0;
const a=1; //'a' has already been declared
//3、不能修改
const a=0;
a=1; //Assignment to constant variable

 

一、函数的扩展

1、函数参数默认值

 

//1、、函数参数默认值
function fn1(x='x'){
    console.log(x) //x  没有传参,默认值为x
}
fn1();
//2、对象传参(
function fn2({x=0,y=0}={}){
    return{x,y}
}
console.log(fn2()) //{x:0,y:0} 未传参,赋默认值

function fn3({x,y}={x:0,y:0}){
    return{x,y}
}
console.log(fn3())  //{x:0,y:0} 未传参,赋默认值
function fn4({x=0,y=0}={}){
    return{x,y}
}
console.log(fn4({x:1}))  //{x:1,y:0}  传入{x:0},y赋默认值
function fn5({x,y}={x:0,y:0}){
    return {x,y}
}
console.log(fn5({x:1}))  //{x:1,y:undefined} 传入{x:0},y未赋值

 

posted @ 2018-01-17 21:28  ggg520danny  阅读(139)  评论(0编辑  收藏  举报