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的主要内容,如果未能解决你的问题,请参考以下文章