ES6 基础(let const) 

1、let的新特性

let与var的区别
1、 不能重复定义相同的变量名(let特点不能重复定义,使用let定义一次即可,多次使用let定义同一个变量 会报错),//报错  Identifier 'num' has already been declared
2、let没有变量提升  有一个块级作用域  及{}就会产生一个块级作用域

   
// let与var的区别 不能重复定义相同的变量名,//报错  Identifier 'num' has already been declared
    //let没有变量提升有一个块级作用域  及{}就会产生一个块级作用域

    // for(let i = 0;i<5;i++){
    //     var num = 10;
    //     let num = 5;
    //     console.log(num);
    // }


    // function fnn(name){
    //     let name = "李四";
    //     console.log(name);
    // }
    // fnn('张三');//报错,重复定义
    function fun1 (){
        console.log(num);
        var num = 1;//变量提升 undefined
    }
    fun1();

    function fun2 (){
        console.log(num);
        let num = 2;//报错  Cannot access 'num' before initialization
    }
    fun2();
  
// for (var i=0; i<input.length;i++){
    //     (function (i) {
    //         input[i].onclick = function(){
    //             alert(i)
    //         }
    //     })(i)
    // }


    // let定义为let声明的变量仅仅在自己的块级作用域
        // 起作用,出了这个块级作用域就不起作用。
    for (let i = 0; i < input.length; i++) {

                input[i].onclick = function () {
                    alert(i)
                }

        }

  

2、conts新特性

const 声明常量

    1、不能重复声明常量名 
    2、声明后必须赋值 字符串,数字 布尔值等基本数据类型 (当常量第一数组,对象时,只要不改变给常量指向的地址,地址内存储的内容可以改变)
    3、常量特点不能修改const num1 ;
  4、没有变量提升
  5、具有块级作用域
 
//const 声明常量

    //1、不能重复声明常量名 
    // var num =10;
    // const num = 15;
    // console.log(num)//Identifier 'num' has already been declared

    //声明后必须赋值 字符串,数字 布尔值等基本数据类型 常量特点不能修改const num1 ;
    // console.log(num1);//Missing initializer in const declaration
    // const person = {num:10,sex:"男"};//指向是一个地址,地址不能修改
    // console.log(person.num);
    // person.num = 40;//可以改变地址中的值
    // console.log(person.num);

    // person = {num:100};
    // console.log(person.num);//报错 

    // const arr = [1,2,3];
    // arr[1]=5;
    // console.log(arr[1]);//数组同理

    // function fun() {
    //     console.log(num);
    //     const num = 10;
    // }
    // fn()//报错  没有变量提升
    
    //具有块级作用域
    for(var j=0;j<5;j++){
        const num =10;

    }
    console.log(num);

  

 

 

 posted on 2020-08-31 11:44  wen22  阅读(127)  评论(0编辑  收藏  举报