<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body></body>
</html>
<script>
// 通过var 来定义变量的时候有什么缺点
// 1:变量会提升
// 2:没块级作用域,全局变量污染
// console.log(a);
// var a = '知了堂'
// for (var i = 0; i < 3; i++) {
// console.log(i);
// }
// console.log(i);
// console.log(a); // let和const.html:67 Uncaught ReferenceError: Cannot access 'a' before initialization
// let a = 1;
// let a = 1;
// function a() { // Uncaught SyntaxError: Identifier 'a' has already been declared
// }
// var a = 1; // 这里a是函数声明的a
// function a() {}
// console.log(a); // 1 // JavaScript在编译时会把 相同变量名会把var a忽略
// // 分析:
// // 编译过程变量声明提升
// function a() {}
// var a;
// // 执行过程a重新赋值
// a = 1;
// { // 块级作用域:定义在块级作用域的变量 只能在块级作用域中进行使用
// let a = 1;
// console.log(a);
// }
// console.log(a); // a is not defined
// for (var i = 0; i < 5; i++) {
// setTimeout(function() {
// console.log(i);
// }, i * 1000);
// }
// for (let i = 0; i < 3; i++) { // 想要输出的是 0,1,2
// setTimeout(function () {
// console.log(i);
// }, i * 1000)
// }
// console.log(i); // i is not defined
// const 在某一些情况下面,我们需要定义一个全局变量,这个全局变量不能被修改
// 通过const来定义的变量是一个常量,不允许被修改,通时也会产生一个块级作用域
// const PI = 3.14;
// PI = 111;
// console.log(PI); // let和const.html:111 Uncaught TypeError: Assignment to constant variable.
</script>
网友评论