let和const

Posted wendy-0112

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了let和const相关的知识,希望对你有一定的参考价值。

基本概念

let命令:用来声明一个变量,同var非常相似

const命令:用来声明一个常量,常量就是不可改变的量

let命令

用let声明变量的注意事项

1、 使用let声明的变量,所声明的变量只在命令所在的代码块内有效

{
   let a=1;
   var  b=2;

   console.log(a);
}

   console.log(a);//a is not defined  代码块之外是拿不到let声明的变量
   console.log(b);//2

2、使用let命令声明的变量在域解析的时候不会被提升

console.log(a);   //undefined
var a=1;

console.log(b); //报错  b  is  not defined
let b=2;  

typeof c;  //报错  c  is  not defined
let c=10;

拓展

let  f=10;
function fn(){
   f=7;            //暂时性死区
   let f=2;        //在这里又声明了 let  f=2
}

fn(); //f   is  not defined

3、let不允许在同一作用域下声明已经存在的变量

var a=1;
let a;//报错,a已经存在

let b=1;
let b=1; //报错,b已经存在

拓展1

let在for循环中的应用

<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
var btns=document.querySelectorAll("button");
for(var i=0;i<bths.length;i++){
     btns[i].onclick=function(){
         console.log(i);  
    }
}
//5   5次5

输出0,1,2,3,4方法有以下几种

//方法1
for(var i=0;i<btns.length;i++){
     btns[i].index=i;
     btns[i].onclick=function(){
         console.log(this.index);  
    }
}


//0,1,2,3,4

 

//方法2
for(var i=0;i<btns.length;i++){
    (function(){
          btns[i].onclick=function(){
             console.log(i);  
          }
    })(i);
}    


//0,1,2,3,4
//方法3  let

for(let i=0;i<btns.length;i++){
     btns[i].onclick=function(){
          console.log(i);  
     }
}    

//0,1,2,3,4
//再循环语句之内是一个父作用域,在循环体之中是一个子作用域

 

 

拓展2

for(let i=0;i<3;i++){
   let i=10;
   console.log(i);   //3次10
}


console.log(i);i is not defined

//循环体内的i不会受到循环语句i的影响
//在循环语句的这个父作用域与循环体的子作用域里,他们之间是分离的
//使用let初始化i的时候,只在for循环语句中有用,而循环完成之后,不会泄露到for所在的作用域中。

 

 

const命令

const命令同样有上面let的1,2,3条特点

第一,所声明的常量只在其所在的代码块内有效

第二, 声明的常量不会被提升

第三,不能声明已经被声明过的常量或者变量

除了这些在使用const声明常量的时候需要注意的两点:

1、声明的时候必须赋值

var a;
let b;
const c;//报错

2、声明的常量储存简单的数据类型时不可改变其值,如果储存的是对象,那么引用不可以被改变,至于对象里面的数据如何变化,是没有关系的

const a=1;
a={};//报错,a的值不可以被改变


const obj={c:10}; obj.c=20; console.log(obj); //{c:20}

 

以上就是我对let ,const的简单总结。



以上是关于let和const的主要内容,如果未能解决你的问题,请参考以下文章

1.let 和 const 命令

如何用“let”和“const”替换此代码中的“var”关键字?

let and const

let and const

let 和 const 命令

let和const命令