初步认知
基于没有查阅文档以及自己的开发经验对于这三者的认知如下
- 三者都是用于声明变量,const最好区分,一般用于声明常量,声明后赋值后的变量无法重新进行赋值,(有的面试会问const的对象能否重新赋值,对于整个变量会报错,但是可以重新赋值key和value,这一点接下来会仔细说说)
- var是贯穿js的,let和const是es6之后诞生的
- let拥有暂时性死区特性,下面会具体展示
- var拥有变量提升特性,
以上是仅凭面试功底以及经验暂时想出的,接下来接合代码和文档展开说说
变量作用域
var
在函数作用域中声明为局部变量,在{}
代码块或者全局中声明为全局变量,如for、if语句let
&const
声明的变量仅在当前作用域中生效let btns = document.getElementsByTagName('button'); for (var i = 0; i <= btns.length; i++) { btns[i].addEventListener('click', function () { console.log(i); }); } // 每次点击button 显示的会是几
重复声明
var
可以重复声明,let
和const
不可重复声明var name = 'abc'; var name = 'def'; console.log(name) //' def' let age = 18; let age = 28; // 报错
在全局作用域下,var
声明的变量会成为 window 对象的属性, let
和 const
不会;
变量提升
只有
var
声明的变量会自动提升到函数作用域顶部a = 10; console.log(a) // 10 var a;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。