①let和const
1.let 和const是什么
声明变量或声明常量
var 声明变量
let 代var声明变量
const 声明常量 constant
2.let 和const 的用法
和 var 一样
3.什么是变量,什么是常量
var、let声明的就是变量,变量一旦初始化之后还可以重新赋值
const声明的就是常量,常量一旦初始化,就不能重新赋值了,否则就会报错
② const
1.为什么需要const
let
```
let
sex="male"
sex= "female"
console.log(sex);
const
const sex="male"
sex= "female"
console.log(sex);
```
const就是为了那些一旦初始化,就不希望重新赋值的情况设计的
2.const注意事项
2.1使用const声明的常量,一旦声明,就必须立即初始化,不能留到以后赋值
const sex;
sex="male"
2.2const声明的常量,允许在不重新赋值的情况下修改它的值
基本数据类型
const sex="male"
sex="female"
引用数据类型
const person={username:"Alex"}
person.username="zhangsan"
console.log(person);
3.什么时候用const,什么时候用let
不需要改值的情况使用const
③let、const与var的区别
1.重复声明
已经存在的变量或常量,又声明了一遍
var允许重复声明,let、const不允许
2.变量提升
var 会提升变量的声明到当前作用域的顶部
let const不存在变量提升
养成良好的编程习惯,对于所有的变量或者常量,做到先声明,后使用
3.暂时性死区
只要作用域内存在let、const 他们所声明的变量或常量就自动"绑定"这个区域,不再受到外部作用域的影响
4.window对象的属性和方法
全局作用域中,var声明的变量,通过function声明的函数会自动变成window对象的属性或方法
④块级作用域
1.什么是块级作用域
var 没有块级作用域
console.log(i);
}
console.log(i);
let /const有块级作用域
console.log(i);
}
console.log(i);
2.作用域链
for(let i=0;i<3;i++){
console.log(a);
}
}
func()
console.log(i);
作用域链:内层作用域->外层作用域->...->全局作用域
3.有哪些块级作用域
块级作用域
for(){}
while(){}
do{}while()
if(){}
switch(){}
函数作用域
function(){}
对象不构成作用域
const person={
getAge:function(){}//变相的函数作用域
}
⑤let和const的应用
<body>
<button class="btn">0</button>
<button class="btn">1</button>
<button class="btn">2</button>
</body>
闭包
for(var i=0;i<btns.length;i++){
(function(index){
btns[index].addEventListener(
"click",
function(){
console.log(index);
},
false
)
})(i)
}
let/const
for (let i = 0; i < btns.length; i++) {
btns[i].addEventListener(
"click",
function () {
console.log(i);
},
false
);
}