<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// let有函数作用域和块级作用域,var只有函数作用域
// setTimeout是异步函数只有等到主线程全部运行完成才会执行,例如下面这段代码
// 只有遍历5次for才会执行setTimeout里面的内容,因为var没有块级作用域,所以最后i已经为5了,所以打印5次5
for(var i = 0; i < 5; i++){
setTimeout(function(){
console.log(i) //5次5
})
}
// let的块作用域相当于形成了闭包,闭包可以理解成“定义在一个函数内部的函数“。
for(let i = 0; i < 5; i++){
setTimeout(function(){
console.log(i) //0,1,2,3,4
})
}
// let
// 必须要先声明,后使用
// 不可以重复声明
// 可以只声明,不赋值
// const
// 必须先声明,后使用(常量)
// 不可以重复声明
// 声明的时候,必须赋值
// 常量的值不能修改(如果是复杂数据类型,要求不能修改地址)
</script>
</body>
</html>
let和var
最新推荐文章于 2024-07-04 16:37:43 发布