首页 > 其他分享 >var let 经典面试题(理解作用域)

var let 经典面试题(理解作用域)

时间:2023-09-14 09:56:56浏览次数:36  
标签:输出 面试题 执行 console 所以 作用域 let setTimeout

1

 


let 是块级作用域,每次输出的时候要找的i不是同一个i,是各自块作用域的i,是不同的i,在第一个块作用域里i的值是0,第二个是1,以此类推,所以第一个console出来的值是不同的,是0 1 2 3 4
当单独的输出语句输出i的时候,它的作用域并没有i,所以它会报错,所以第二个console出来的值是 i is not defined
最后结果是 0 1 2 3 4 i is not defined

2

 

var 的时候是在同一个作用域里,每次输出的i是同一个i,这个i的值在变,所以输出也在变,所以第一个console结果是0 1 2 3 4
var单独输出的i和for循环的i是同一个作用域,因为i最后变成了5,所以第二个console结果是5.
最后结果是 0 1 2 3 4 5

3

 

由于var定义变量时,变量是被定义在当前作用域里的,setTimeout是异步,要在for循环后执行,所以当settineout函数执行的时候,输出变量i时,会从当时作用域里面去找变量i,总共进行了5次查找,这5次查找都是在当前作用域执行的,所以它们找到的是当时作用域下的同一个i,这个i是5,所以结果是5个5
最后结果是1s后 5 5 5 5 5

4

 

let是块级作用域,每执行一次setTimeout就向每个块中寻找i值,执行了5次,每个块中分别是0 1 2 3 4,所以结果为0 1 2 3 4
最后结果是1s后 0 1 2 3 4

5

 

setTimeout是异步,所以要等for循环后执行setTimeout,for循环执行了5次,结果是5,所以先console外边的一个5,1秒后输出5个5.
最后结果是5 过1s后5 5 5 5 5

6

 

setTimeout是异步,所以要等外边的console执行完后再执行setTimeout,当外边的输出语句输出i的时候,它的作用域并没有i,所以它会报错,所以console出来的值是 i is not defined,由于js是单线程,所以setTimeout就不会执行,所以最后结果是 i is not defined

标签:输出,面试题,执行,console,所以,作用域,let,setTimeout
From: https://www.cnblogs.com/yeduweichengzhaoyu/p/17701532.html

相关文章

  • xencenter中的虚拟机死机,无法强制关机,并提示:内部错误: VM not in expected power sta
    uuid查看选中虚拟机,常规中显示uuid运行命令xevm-reset-powerstate--forceuuid=your-vm-uuid即可强制关机参考:https://www.incredigeek.com/home/vm-not-in-expected-power-state-after-completing-operation-xenserver/......
  • 索引常见面试题
    索引常见面试题什么是索引?索引是数据的目录,用来加快数据的搜索,类似书本的目录可以分为几个类型数据结构b+树索引,通过b+树存储索引,但是非叶子节点保存数据,叶子节点保存数据hash索引:通过hash计算得出索引位置fulltext索引:也叫全文索引(我不会介绍)物理存储聚簇索引:索引......
  • 大厂面试题:有了 G1 还需要其他垃圾回收器吗?
    Java全能学习+面试指南:https://javaxiaobear.cn今天我们主要来看下这两个高频的面试考题:G1 的回收原理是什么?为什么G1比传统GC回收性能好?为什么G1如此完美仍然会有ZGC?我们在上一篇中,简要的介绍了CMS垃圾回收器,下面我们简单回忆一下它的一个极端场景(而且是经常......
  • springcloud相关面试题
    (目录)springcloud相关面试题springcloud中网关起什么作用在SpringCloud中,网关起到了路由和过滤的作用。路由:网关通过配置路由规则,将请求转发到不同的服务实例上。它可以根据请求的URL、请求的HTTP方法、请求的Header等信息,将请求路由到相应的服务实例上。通过网关,可以实现......
  • Git常见的面试题
    在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它。因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一。以下是一些常见的Git面试题,希望它们能帮助你在面试中脱颖而出。什么是Git?Git是一个分布式版本控制系统,用于跟踪......
  • 对标金九银十,分享32个模块的Android面试题,分分钟拿捏面试官
    前言2023年初伴随着疫情结束,迎来了“金三银四”。以为终于迎来胜利的“曙光”,不成想,现实却是当头一棒!!!从“金三银四”的“战绩”来看,程序员跳槽或者找工作并不理想,大批人迟迟找不到工作,大厂仍旧在进行几轮裁员,整个就业市场都不是太好!出现这种情况是因为中美贸易战,导致大环境不好、大......
  • thymeleaf获取作用域的值
    参考:https://blog.csdn.net/qq_43634655/article/details/126424130从session取值后端代码 Map<String,Object>map=newHashMap<>(); map.put("id","1001"); map.put("name","小虎"); map.put("age","18......
  • Servlet
    一、Servlet继承结构1.概述 tomcat服务器提供了Servlet规范的实现。我们写的代码要想被服务器调用,也必须遵守Servlet规范。自定义的Servlet类并没有去直接实现Servlet接口,是因为该接口中方法较多,Servlet接口有它的一系列实现类,我们继承实现类即间接的实现了Servlet接......
  • 面试题:Mybatis中的#{}和${}有什么区别?这是我见过最好的回答
    面试题:Mybatis中的#{}和${}有什么区别?前言今天来分享一道比较好的面试题,“Mybatis中的#{}和${}有什么区别?”。对于这个问题,我们一起看看考察点和比较好的回答吧!题,看看普通人考察点mybatis是现在企业级开发中经常使用的数据持久层框架,这个问题就是面试官想考察我们对#{},${}......
  • 剑指offer面试题3:数组中重复的数字
    一、知识点:数组相关知识二、描述在一个长度为n的数组里的所有数字都在0~n-1范围内,数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道重复几次。请找出数组中任意一个重复的数字,例如:输入长度为7的数组[2,3,2,4,3,3,5],那么输出2或者3都是正确的,存在不合法的输入的话输出-1。......