标签:define 部分 外部 func code 区域 size 作用 err
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
标签:define 部分 外部 func code 区域 size 作用 err
原文地址:https://www.cnblogs.com/ckafter/p/9926155.html