ES6中let 和曾经的var的三个区别

1:不存在变量提升。

console log(c); var c='10'
用var,预解析:
var c; console log(c); c='10'
用var,得到结果默认underfunded
所以var可以先用,后赋值。
用let,则必须一步步走,
console log(c); let c='10'
会报错。所以在let中不能先用后赋值!

2:同一作用域下不能重复定义同一名字。

var a=10; var a=100; console log(a);
结果100,后面会覆盖上面的。
var t=10; var t=100; console log(t);
报错!error .不能重复定义某一名字!
var t=10; t=100; console log(t);
这种不报错,因为只是t的值改了,没有重新定义t。

3:有严格作用域!

var 属于函数作用域!
function p(){ var n=10 if(true){ var n=100 } console log(n) } p()//100
var会导致局部能改全局设置。
let,属于块级作用域,以大括号为边界!互不侵犯!
function p(){ let n=10 if(true){ let n=100 } console log(n) } p()//10。

在这里用let定义了两个n。但是没错,为什么呢?????因为他们作用域不一样!!!就像你爹有你,你邻居家王叔也有自己的孩子。嗯就酱!手打不易!!给个赞吧,有疑问可在评论区搞事情!看到会解答的哦!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享