首页 > 其他分享 >let 和 var声明变量的区别

let 和 var声明变量的区别

时间:2023-10-19 16:25:05浏览次数:36  
标签:变量 window let var 100 声明

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

相关文章

  • 第八章 Servlet高级
    目录一.单选题(共5题,50分)二.判断题(共5题,50分)一.单选题(共5题,50分)(单选题)下面选项中,关于统计网站当前在线人数的计数器count变量应该保存的域范围是()A.requestB.sessionC.applicationD.page(单选题)<session-config><session-timeout>2</session-timeout......
  • CompletableFuture异步优化代码
    CompletableFuture异步编排优化代码我们在项目开发中,有可能遇到一个接口需要调用N个服务的接口。比如用户请求获取订单信息,需要调用用户信息、商品信息、物流信息等接口,最后再汇总数据统一返回。如果使用串行的方法按照顺序挨个调用接口,这样接口的响应的速度就很慢。如果并行调用......
  • Spring: SmartInitializingSingleton
    packagecn.edu.tju.service3;importorg.springframework.beans.factory.SmartInitializingSingleton;importorg.springframework.stereotype.Component;@ComponentpublicclassMySmartServiceimplementsSmartInitializingSingleton{@Overridepublicvo......
  • Arrays.asList() 和 Collections.singletonList()
    Collections.singletonList()  创建不可变List,只包含单个元素,List容量始终为1;  Arrays.asList()  快速创建List,但创建的列表是不可变的,不可调用add方法;......
  • 从基础到复合:一文看懂jvs规则引擎中的变量进化论
    JVS-rules中的“变量”概念与编程语言中的变量类似,但它们通常在规则系统中处理条件判断、业务结果复制场景,如下所示:条件判断:在规则引擎中,规则通常由两个部分组成:条件和分支。变量用于描述条件部分中的数据和状态。例如,一个规则可能是:“如果温度超过30度,则执行打开空调的分支”。这......
  • 常量与变量
    常量与变量常量什么是常量永远不会改变的量如:10,100,13,1000L,10.4F//这里演示常量赋值publicclassConstantDemo{publicstaticvoidmain(String[]args){//常量finalinti=100;System.out.println(i);}}变量变量定义格式//数......
  • R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化|附代码数据
    全文链接:http://tecdat.cn/?p=22350 最近我们被客户要求撰写关于时变向量自回归(TV-VAR)模型的研究报告,包括一些图形和统计输出。在心理学研究中,个人主体的模型正变得越来越流行。原因之一是很难从人之间的数据推断出个人过程另一个原因是,由于移动设备无处不在,从个人获得的时间......
  • cron: can’t lock /var/run/crond.pid 错误处理方法
    解决方案: rm -rf /var/run/crond.pid 重启即可  重新加载处理方法: /etc/init.d/cronreload 重启服务处理方法:/etc/init.d/crondrestart  或者杀掉crond进程:pkillcrond或者pkillcron,然后/etc/init.d/crondrestart  ......
  • go分析变量逃逸
    Go语言中的变量逃逸指的是编译器将一个变量从局部(函数内部)变量变为堆上分配的全局变量的情况。变量逃逸通常发生在以下情况:1. 返回指针:当函数返回一个局部变量的指针时,编译器将不得不将该变量分配到堆上,以便在函数返回后仍然可以访问它。func createObject() *Objec......
  • var、let 和 const 的区别
    1. var是函数作用域;let是块级作用域,{}中为块;2. 变量提升。var定义的变量会变量提升,比如 console.log(a);//undefined vara=1; 而let不存在变量提升,反而执行瞬间被称为“暂时性死区”3.全局声明。在全局作用域中var声明的变量会成为window对象的属性,......