逃不掉的varletconst学习
Posted 阿曾的奶油汤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逃不掉的varletconst学习相关的知识,希望对你有一定的参考价值。
初步认知
基于没有查阅文档以及自己的开发经验对于这三者的认知如下
- 三者都是用于声明变量,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;
const
声明的变量,声明时必须同时初始化赋值,且不支持修改(可以修改对象内部属性)
以上是关于逃不掉的varletconst学习的主要内容,如果未能解决你的问题,请参考以下文章