var和let的区别

222 阅读1分钟

1:不存在变量提升。

console log(c); 
var c='10'

用var,预解析: 

var c; 
console log(c);
c='10'

用var,得到结果默认 undefined 所以var可以先用,后赋值。 用let,则必须一步步走, 

console log(c);
let c='10'

会报错。所以在let中不能先用后赋值!

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

var a=10var a=100; 
console log(a)

结果100,后面会覆盖上面的。

var t=10;
var t=100;
console log(t)

报错!error .不能重复定义某一名字! 

var t=10t=100;
console log(t);

这种不报错,因为只是t的值改了,没有重新定义t。

3:有严格作用域!

var 属于函数作用域!

function p(){ 
var n=10 iftrue){ var n=100 }
console log(n) }
p()//100

 

var会导致局部能改全局设置。 let,属于块级作用域,以大括号为边界!互不侵犯!

function p()
{ let n=10 iftrue){ let n=100 } 
console log(n) } 
p()//10。

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