<!-- 分析es6里面的let和const与之前的var之间的区别是什么 -->
<!-- let和const同样都是声明变量,只是let和const声明的变量只在块级作用域里面有效 -->
// 顶层对象window.在es5里面顶层对象和全局对象是相同的,所以即使变量不声明也可以使用,这就es5的比较严重的问题。无法在编译时提示变量未声明
<!-- 为什么新增let呢? -->
<script>
//作用域的问题,这个输出的结果说明了循环i的作用域和内部变量i不在同一个作用域
let i = 'bbb'
for (let i = 0; i < 4; i++) {
let i = 'sss'
console.log(i); //输出四次sss
}
//变量的提升问题
console.log(foo); //underfined
var foo = 8
// console.log(foo1); //报错
// let foo1 = 8
//暂时性死区的问题,就是只要块级作用域里面有let,然后你在定义变量之前调用变量,那么就会报错
let one = 'haha'
if (true) {
one = 123
console.log(one);
// let one;
}
//不允许重复声明变量
function two(){
let a = 10
let a = 20
}
// 顶层对象window.在es5里面顶层对象和全局对象是相同的,
a = 10
console.log(window.a); //10
let b = 100
console.log(window.b); //underfined
</script>
前端let的特性有哪些,作用域,变量提升,暂时性死区,重复声明,顶层对象和全局对象区分
猜你喜欢
转载自blog.csdn.net/weixin_40180205/article/details/104780182
今日推荐
周排行