let和const变量学习
Posted ckafter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了let和const变量学习相关的知识,希望对你有一定的参考价值。
1,var全局变量,let块级变量
var a = [];
for (let i = 0;/*var i=0*/ i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6]();
//6 10
var变量导致全局范围内有效,所以全局只
有一个变量i,最后输出10而不是6
2,for循环有一个特别之处,就是设置循环变量的那部分是一个
父作用域,而循环体内部是一个单独的子作用域。
for (let i = 0; i < 3; i++) {
let i = ‘abc‘;
console.log(i);
}
// abc
// abc
// abc
3,let不存在变量提升:
var存在变量提升现象,var声明之前调用对象输出undefinedvar存在变量提升现象,var声明之前调用对象输出undefined
let 则不存在这种现象所以直接报错。
4,暂时性死区:
只要块级作用域内存在let命令,它所声明的变量就“绑定”
这个区域,不在受外部的影响
var tmp = 123;
if (true) {
tmp = ‘abc‘; // ReferenceError
let tmp;
}
暂时性死区表明typeof不再是一个百分百安全的操作
typeof处于let声明前是在暂时性死区中会报错,
当并没有声明typeof的变量时反而不报错,结果为undefined
以上是关于let和const变量学习的主要内容,如果未能解决你的问题,请参考以下文章