美文网首页1
ES6新增的三个重要属性let const =>

ES6新增的三个重要属性let const =>

作者: 哼_ | 来源:发表于2017-07-18 13:56 被阅读31次

    let

    用let声明的变量,没有变量提升###

    let a = "zhar";
    console.log(a);//输出结果是 zhar
    

    但如果是

    console.log(a);//输出结果是 a is not defined
    let a = "zhar";
    //这个说明, let 声明的变量,跟 var 声明的变量不同,let 声明的变量没有变量提升
    

    let声明的变量是块级作用域,是局部变量

    var arr = [];
    for(let i=0;i<5;i++){
        arr[i] = function(){
            console.log(i);
        }
    }
    arr[4]();  //输出的结果是4,如果arr[3]();输出的结果就是3;
    

    对比以下代码看看:

    var arr = [];
    for(var i=0;i<5;i++){
        arr[i] = function(){
            console.log(i);
        }
    }
    arr[4]();//输出结果是5  不管arr的下标如何改变,结果都是5;
    

    var 和 let 的区别

    var  b = 10;
    var  b = 20;
    console.log(b);//结果是20;  
    
    let b = 10;
    let b = 20;
    console.log(b);//结果就是b is declard( b 已经被声明过了);
    

    再来一个例子 var 定义的是全局变量

    d = 10;
    var  d ;
    console.log("d=",d);//输出结果是10;
    

    如果换成let let 定义的是区域变量.所以用了let 不会担心变量名称的重复使用

    d = 10;
    let  d ;
    console.log("d=",d); //输出结果是  d is not defined
    
    var  e = 100;
    function fun(){
        let e;
        e=200;
        console.log(e);
    }
    fun();//暂时性死区 
    // 使用 let 声明的变量 不受外部的同名变量的影响  输出结果是200
    //如果let  e;放在e=200;的后面,就会报错,e is not defined
    

    Const

    const是声明常量的 const是constant单词的简写

    var PI = 3.14;//常用大写单词表示这是一个常量;
    //ES6  新增了常量的写法
    const PI2 = 3.14;//正确写法
    //PI2 = 2.15;  不可更改,这样写会报错,常量 是不可变的,
    
    const p ;// 一旦声明需立即赋值,不可更改,其他与let一致.不赋值也会报错 
    

    =>箭头函数

    箭头函数不会导致作用域的更改
    保留当前的作用域,实用箭头函数声明的函数,
    其作用域为 声明时所在的位置(作用域)

    箭头函数的好处: 作用域已经指向了外层,不再像ES5的函数,函数内部的是一个局部函数,变量\作用域指向的是内部函数的作用域的对象,使用箭头函数以后,不仅语法更加简洁,而且,this指向了外部的环境

    箭头函数不能使用 new
    箭头函数 不能使用 arguments

    //是一种新的声明函数的方式
    function fun(){
        return  100;
    }
    console.log(fun()); //以前的写法
    
    let foo = () => 10;
    console.log(foo());//箭头函数的写法
    
    let bar = (a,b)=> a*b;
    console.log(bar(11,12));//也可以传参数
    
    let aa = (a,b)=>{
        return a+6+b;
    }
    console.log(aa(12,11)); //可以return
    
    //回调函数
    function b(callback){
        callback();
    }
    b(function(){
        console.log(1111);
    })
    b(()=>{console.log(222)});
    b(()=>console.log(33));//可以传回调函数
    
    let obj = {
        name:"zhar",
        say : function(){
            console.log(this.name);
            setTimeout(()=> console.log(this.name),0)
        }
    }
    obj.say();
    

    相关文章

      网友评论

        本文标题:ES6新增的三个重要属性let const =>

        本文链接:https://www.haomeiwen.com/subject/nzzckxtx.html