《JavaScript高级程序设计》学习
var
1、作用域
(1)变量声明在自定义函数内部
变量在函数内部声明,则该变量为函数内的局部变量
(2)变量声明在自定义函数外部
变量直接声明在全局,则为全局变量;
变量在函数内部定义时,省略var操作符,创建的是全局变量
var声明的全局变量会成为window的属性
2、声明提升
var进行变量声明,会自动将声明提升至对应作用域的开头
可以反复声明同一个变量
3、for循环
for(var i=0;i<3;++i){}
console.log(i) //3
let
1、作用域
let的作用域为块级作用域
可以理解为,let声明的变量作用域仅在包含它的最小{}内部
与var不同,let在全局作用域中声明的变量不会成为window的属性
2、暂时性死区
let声明的变量不存在变量提升,因此在变量声明之前访问会报错
3、for循环
for(let i=0;i<3;++i){}
console.log(i) //ReferenceError
const
1、作用域
块级作用域
2、不允许重复声明
3、常量
声明时必须同时初始化
const声明的为常量,是只读的,只能在声明的时候赋值,后续不能修改