<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>let</title>
</head>
<body>
<script type="text/javascript">
// var name = '123';
var num = 123;
// let
// 1.let 声明的变量不存在变量提升
// 2.不能重复声明, 防止多人协作时代码发生冲突
// 3.块级作用域
// 4.声明的全局变量不是全局对象window的属性
// 5.暂时性死区
// 1.let 声明的变量不存在变量提升
// console.log(a);
let a = '123'; // Cannot access 'a' before initialization
// var a = '123'; // undefined
// 2.不能重复声明, 防止多人协作时代码发生冲突
let b = 12;
// let b = 13; // Identifier 'b' has already been declared
// 3.块级作用域
{
var c = 55;
let d = 66;
}
console.log(c); // 55
// console.log(d); // d is not defined
// 4.声明的全局变量不是全局对象window的属性
var e = 77;
let f = 88;
console.dir(window);
// 5.暂时性死区
// 只要块级作用域内 存在let命令, 他所声明的变量 就 绑定 在这个区域,不再受外部影响
var tmp = 1;
if (true) {
// console.log(tmp);
let tmp = 2;
// 首先是存在了 全局变量 tmp,
// 但是块级作用域内 let 又声明了一个局部变量 tmp,
// 导致后者绑定了这个块级作用域,
// 所以在let声明变量前, 对tmp赋值 使用就会报错
}
for(let i = 0; i < 10; i++) {
// console.log(i);
}
for(let i = 11; i < 20; i++) { // let 和 var 切换 去理解 let 会计作用
// console.log(i);
setTimeout(function() {
// 19
// 11- 19
// 报错
console.log(i);
}, 3000);
}
console.log(i);//Uncaught ReferenceError: i is not defined
</script>
</body>
</html>
01(新的声明方式)let
最新推荐文章于 2024-06-04 23:11:16 发布