刷题遇到的问题

news2024/11/18 23:22:11

前言:好记性不如烂笔头,在刷题的时候遇到了如下代码,最终运行结果与我想的答案有所不同,在此记录一下方便下次理解
在这里插入图片描述

1、变量提升与函数声明

var time = new Date();
function fx() {
  console.log(time); // undefined
  if (false) {
    var time = "hello";
  }
}
fx();

(1) 结果:undefined
(2) 解析:在任何作⽤域中使⽤var声明的变量,都会被提升到其作⽤域最顶部且默认值为undefined,但函数声明的优先级高于变量提升,再加上JavaScript是从上到下的顺序运行代码,所以最终结果为undefined ,上述代码的实际运行情况如下

function fx() {
  var time = undefined;
  console.log(time); // undefined
  if (false) {
    time = "hello";
  }
}
var time = undefined;
time = new Date();
fx();

2、for循环中let、var和异步的使用

// 案例1
for (var i = 0; i < 5; i++) {
  setTimeout(() => {
    console.log("var--值", i);
  }, 5);
}
// 案例2
for (let i = 0; i < 5; i++) {
  setTimeout(() => {
    console.log("let--值", i);
  }, 5);
}

(1) 结果
在这里插入图片描述
(2) 解析:setTimeout是异步的,for是同步的,JavaScript会将同步的代码执行完之后再去执行异步代码,所以上述案例会先执行5遍i++ 代码,再执行5遍输出i的代码。在案例1中,i的作用域为全局作用域,相当于5个人住一件房子,相互之间产生影响,所以最终输出5个5;在案例2中,i的作用域为块级作用域,每次循环都会创建新的i,相当于5个人每人住一间房,相互之间不会产生影响,所以输出0-1-2-3-4
(3) 办法:在案例一中,如果想用var定义变量且输出结果为0-1-2-3-4,则可以用闭包(闭包的参数和变量不会被垃圾回收机制回收)的方式来解决这个问题,如下:

for (var i = 0; i < 5; i++) {
  (function (i) {
    setTimeout(() => {
      console.log("var--值", i);
    }, 5);
  })(i);
}

3、待添加…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/694625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 剑指 Offer 13. 机器人的运动范围(深度遍历)

LeetCode 剑指 Offer 13. 机器人的运动范围 原题思路代码运行截图收获 原题 LeetCode 剑指 Offer 13. 机器人的运动范围 思路 通过深度遍历来找出所有可达的格子通过0、1、2来区分未遍历、可到达、不可到达三种状态 代码 class Solution { public:int visited[109][109];i…

Scala面向对象【下】

1、特质 Scala 语言中&#xff0c;采用特质 trait&#xff08;特征&#xff09;来代替接口的概念&#xff0c;也就是说&#xff0c;多个类具有相同的特质&#xff08;特征&#xff09;时&#xff0c;就可以将这个特质&#xff08;特征&#xff09;独立出来&#xff0c;采用关键…

VSCode 关闭未修改文件编辑器的替换

文章目录 1 关闭编辑预览参考 1 关闭编辑预览 在setting中搜索preview取消enable Preview 选项[可选] 设置不同工作区 参考 vs code取消打开一个文件会替换之前未修改文件 https://blog.csdn.net/networkhunter/article/details/105043771

多个域名映射一个nginx多个80端口

阿里云多个二级域名&#xff0c;解析到同一个机器外网ip地址&#xff1a; http://demo.xxx.com.cn/ http://yang.xxx.com.cn/ nginx.conf 配置文件&#xff1a; server{listen 80;server_name yang.xxx.com.cn;# 第1个二级域名映射80端口index index.html index.htm index.ph…

【深度学习】6-2 卷积神经网络 - 池化层

池化是缩小高、长方向上的空间的运算。比如下图&#xff0c;将2 x 2的区域集约成1个元素的处理&#xff0c;缩小空间大小 上面的例子是按步幅2进行2x2的Max池化时的处理顺序。“Max池化”是获取最大值的运算&#xff0c;“2 x 2”表示目标区域的大小。从2x2的区域中取出最大的…

探索Gradio的Chatbot模块:创建交互式聊天机器人

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

构建高效学生志愿者活动管理系统:基于前后端分离的设计与实现

本文介绍了一种基于前后端分离的学生志愿者活动管理系统的设计与实现。通过前后端分离的架构,系统实现了高度可扩展性和灵活性,能够有效管理学生志愿者活动,并提供友好的用户界面。文章将详细介绍系统的架构设计、技术选型以及核心功能的实现,并给出相应的代码示例。 学生…

Linux——4linux实用操作

目录 4.1 各类小技巧&#xff08;快捷键&#xff09; 4.2 软件安装 4.3 systemctl 4.4 软连接 4.5 日期、时区 4.6 IP地址、主机名 IP地址 主机名 域名解析 配置主机映射 虚拟机配置固定IP 4.7 网络传输 下载和网络请求 端口 4.8 进程管理 4.9 主机状态 4.10 …

使用docx4j实现word转pdf

前言 word文件转pdf docx4j 将word转pdf 导入依赖 <dependency><groupId>org.docx4j</groupId><artifactId>docx4j-JAXB-Internal</artifactId><version>8.3.9</version></dependency><dependency><groupId>or…

计算机网络 - 第一章(下)

1.2_1 分层结构、协议、接口、服务_哔哩哔哩_bilibili1.2_1 分层结构、协议、接口、服务是王道计算机考研 计算机网络的第7集视频&#xff0c;该合集共计76集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://www.bilibili.com/video/BV19E411D78…

移远通信推出新款卫星通信模组CC660D-LS,加速IoT终端直连卫星

上海&#xff0c;2023年6月27日 — 在2023上海世界移动通信大会&#xff08;MWC Shanghai&#xff09;期间&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;推出其在卫星通信领域的最新力作—— CC660D-LS 模组。该模组现阶段面向北美和欧洲市场&#…

【雕爷学编程】Arduino动手做(133)---LCD1602扩展板模块

7款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&…

FDTD Solutions基础到精通,适用于微纳光学领域光学器件、超表面的仿真

专题二&#xff1a; “ FDTD 时域有限差分数值模拟方法与应用 课 程 内 容 FDTD基础入门 1 FDTD Solutions 求解物理问题的方法 1.1 FDTD与麦克斯韦方程 1.2 FDTD中的网格化 2 FDTD Solutions 特点与应用 3 FDTD功能与使用 主窗口——CAD人机交互界面计算机辅助设计…

SQL Server Management Studio (SSMS) 指定端口Port连接, 用逗号, 例如: localhost,1433

Microsoft SQL Server Management Studio (SSMS) 指定端口连接, 用,逗号, 例如 localhost,1433 localhost 等效 localhost,(逗号&#xff09;1433

使用项目跟踪工具,让项目管理更高效,使用项目管理工具的好处

为了确保项目按照预期规划完成&#xff0c;项目经理必须跟踪每个活动的进度。 项目跟踪是贯穿整个项目生命周期的重要活动&#xff0c;它可以通过有效的方式清晰地了解项目的实际进展情况。 项目管理工具可以帮助项目管理者实时跟踪项目状态&#xff0c;及时发现问题并跟踪解…

【springboot整合】Springboot和RedisCache

前面介绍了CacheAutoConfiguration默认生效的是SimpleCacheConfiguration配置类&#xff0c;实际中我们更多的是利用redis作为缓存&#xff0c;现在我们继续看看RedisCacheConfiguration有什么不同 原理分析 在引入redis相关依赖之后&#xff0c;对应的RedisCacheConfiguratio…

基于BS架构的汽车销售管理系统(源码+文档+报告+安装环境)

如今&#xff0c;越来越多的人愿意选择一种适合自己的管理方案&#xff0c;随着线上管理系统的快速兴起&#xff0c;大量的车辆信息被人们所熟知&#xff0c;而4S店车辆管理系统无疑是对4S店车辆进行管理的最好的系统。4S店车辆系统&#xff0c;为用户提供了一种可以让他们更好…

(16)燃油流量和液位传感器

文章目录 前言 16.1 燃油流量传感器 16.1.1 连接到自动驾驶仪 16.2 燃油液位传感器 16.2.1 PWM油位传感器 16.2.2 模拟油位传感器 前言 在 4.0 及以后的固件版本中&#xff0c;ArduPilot 提供了使用燃油流量和液位传感器的能力&#xff0c;此外还有电池监控器。支持脉冲输…

MongoDB复制集原理

复制集简介 Mongodb复制集由一组Mongod实例&#xff08;进程&#xff09;组成&#xff0c;包含一个Primary节点和多个Secondary节点&#xff0c;Mongodb Driver&#xff08;客户端&#xff09;的所有数据都写入Primary&#xff0c;Secondary从Primary同步写入的数据&#xff0…

Flink-窗口源码

滚动窗口底层只有一个窗口&#xff0c;每次用for循环&#xff0c;把前面过期的数据移除&#xff0c;留下的数据再进行计算 滑动窗口的时间窗口&#xff0c;是有多个window的&#xff0c;因为有重叠的数据 计数窗口、计数滑动窗口&#xff0c;底层只有一个窗口 会话窗口只有一…