1、能否重复声明变量
使用var 可以重复声明一个变量,且不会报错,这样极有可能覆盖之前已经存在的变量,但是let重复声明变量时 ,编译时就会提示错误,避免因为变量重复声明而导致的错误,且无法定位到错误原因,这使得在后期代码调试和纠错上,大大的增加了工作难度
let a = 200; let a= 300; 编译报错 var a = 200; var a = 300; 编译通过
2、作用域不同
let 是块级作用域,声明的变量只在块级中生效,而var不是块级作用域;代码执行到变量作用域之外以后,就会销毁变量,释放变量占用的内存,let作用域相较于var要小,这就意味着更快的执行速度和较小的占用内存空间
3、是否变量提升
var声明的变量会存在变量提升的问题,而let不会
console.loog(a); var a = 100; 不会报错,但是会输出undefined; 编译之后执行时等同于: var a ; console.log(a); a = 100; 这种现象就是‘变量提升’; 而用let声明时,如果未声明之前就使用,会报错;
4、是否挂载全局/顶层对象上
使用var声明的变量,默认是挂在顶层的全局对象上,即浏览器的window上;window上过多的挂在对象,会是window对象过于臃肿,降低浏览器的性能;而let声明的变量不会挂载在window上
var aaaa = 100 function bbbb() { console.log('i love you') } console.log( window.aaaa ) // 输出 100 window.bbbb() // 调用函数, 输出 'i love you' let aaaa = 100 console.log( window.aaaa ) // undefined
注:const 本意是定义常量,即定义赋值以后不能修改的量
const a = 100 a = 200 // 报错
标签:变量,window,let,var,100,声明 From: https://www.cnblogs.com/zha-hdlxdl/p/17774983.html