- let var 是声明变量的 const 是声明常量的
- var 声明的变量会声明提升 但是 const 和 let 不会 (声明提升就是声明的变量会把声明语句提到作用域的顶端 但是赋值语句留在原地)
// console.log(num); // 输出null
var num = 10;
-------------------->
//相当
var num
// console.log(num); // 输出null
num = 10;
// 这是声明提升
- var 在全局作⽤域下声明变量会导致变量挂载在 window 上,其他两者不会
let num2 = 20;
var num = 10;
console.log(window.num);
// 输出10 可以输出说明挂载在 window 上了
console.log(window.num2);
// 会报错
- let 和 const 声明的是块级作用域 var 声明的是函数作用域
{
let data = "大怨种";
var data2 = "小怨种";
}
console.log(data2);
// 输出 "小怨种"
console.log(data);
// 报错
块级作用域:只要是{}
大括号内就是块级作用域
函数作用域: 只有函数的{}
内才是函数作用域
作用域内的数据在作用域外是拿不到的
作用域
就是一段代码起作用的区域 所以才有块级作用域和函数作用域