Javascript 奇怪的作用域行为

2023-12-11

我一直在研究 Javascript 函数作用域并遇到了这个:

var scope = "global";

function f(){
    console.log(scope);

    var scope = "local";

    console.log(scope);
}

f();

现在我明白第一个日志的输出是“未定义”的,因为 js 如何在函数顶部提升变量。但是当我从“varscope =”local“;”中删除var时第一个日志输出“全局”,这让我摸不着头脑。有人可以解释为什么会发生这种情况吗?我的意思是js不是按顺序运行代码吗?因此,删除 VAR 对第一个日志有何影响?


两遍解析。该代码将被视为

function f() {
   var scope;  // var created, but no value assigned. this overrides the earlier global
   console.log(scope);
   scope = 'local';
   console.log(scope);
}

var 的 CREATION 将被执行,就好像它是函数中执行的第一位代码一样。但实际的赋值操作只有在正常情况下才会发生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 奇怪的作用域行为 的相关文章

  • 如何在指令模板中使用动态 ng-show 值?

    我正在学习 Angular 并且尝试通过使用 Angular 指令来减少执行一些常见操作 例如显示错误消息 所需的代码 我想创建的一个指令是这样的
  • 如何在react-select v2中创建optgroup?

    我想在我的反应选择列表中包含 optgroups 但它似乎没有记录在任何地方 我有以下结构 是从评论中提取的https github com JedWatson react select issues 59 https github com
  • 向 JS 计算器添加键盘支持时出现的问题

    我想为我的计算器添加键盘支持 当我用键盘按下操作 即 或 时 js将其视为数字 而不是操作 例如 当我通过点击计算 10 11 时 我将得到 21 作为结果 当我通过键盘输入时 我会得到 10 为什么会发生这种情况 是否可以改变它 div
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • Visual Studio IDE 中功能后的空间

    如何设置 Visual Studio 中的设计以在我的 javascript 函数后面放置一个空格 目前 当我按下返回键时 我得到了这个 var myfunc function 当我想要这个的时候 var myfunc function 知
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • Strapi 未加载 Digital Ocean 上托管的现有 MongoDB 中的集合

    我正在使用 Strapi 创建一个新应用程序 并尝试将其与托管在 Digital Ocean 上的 MongoDB 连接 但不幸的是Strapi 无法从现有 MongoDB 获取集合 在这里 我提到我实现 Strapi 与现有 MongoD
  • 禁用整个站点的 IE8 加速器

    是的 我知道有类似的问题 https stackoverflow com questions 499565 is it possible to disable ie8 accelerators on my website在 SO 上 但它已
  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • 添加选项以选择框而不用 Internet Explorer 关闭该框?

    我正在尝试构建一个包含多个下拉选择框的网页 这些下拉选择框在首次打开时异步加载其选项 这在 Firefox 下工作得很好 但在 Internet Explorer 下则不然 下面是我想要实现的目标的一个小例子 基本上 有一个选择框 ID 为
  • 很奇怪!调用 window.location 或 location.replace 会重定向到该页面,然后再次返回!

    我处于调试模式 因此我可以看到正在访问哪个页面 当我打电话时window location or window location replace 它会转到该页面 然后返回原始页面 怎么会这样 解决方案是添加 window location
  • 更改特定字符串的颜色

    有谁知道如果将特定单词输入文本区域 我如何更改它的颜色 例如 如果用户输入 你好我的朋友 它会动态地将 你好 更改为绿色 在google上花了很多时间 找不到任何相关的东西 谢谢 textareas 的设计目的不是选择性着色
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除
  • 表单序列化javascript(无框架)

    想知道 javascript 中是否有一个没有 jquery 或任何框架的函数可以让我序列化表单并访问序列化版本 2023 年更新 Use FormData https developer mozilla org en US docs We
  • Promise 构造函数回调的主体何时执行?

    假设我有以下代码构造一个Promise function doSomethingAsynchronous return new Promise resolve gt const result doSomeWork setTimeout gt
  • 使用 Socket.IO 时如何访问会话标识符?

    我有一个聊天 我需要管理独特的连接 我四处搜寻 但我找到的解决方案似乎都已被弃用 那么 如何使用 Socket IO 获取套接字的会话 ID 我在用着Node js http en wikipedia org wiki Node js Ex
  • 从未使用 mimeType 初始化的 MediaRecorder 获取 mimeType

    我正在使用 MediaRecorder API 在页面上录制一些媒体 在我的 MediaRecorder 初始化中 我没有指定内容类型 因为我不需要任何特别的内容 浏览器可以选择它想要的 var mediaRecorder new Medi
  • 使用 div 或表格来包含链接列更好吗?

    我的页面底部有 3 列链接 每列都放入一个 div 中 所有三个 div 都包装在页面中央的一个大 div 中 这是更适合桌子的东西还是桌子不适合这项工作 您还可以使用 ul http www w3schools com tags tag
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles

随机推荐

  • 如何使用 JavaScript 获取本地 IP 地址? [复制]

    这个问题在这里已经有答案了 我想获取客户端系统的本地IP地址 我如何使用 JavaScript 来实现这一点 我认为如果没有一些服务器交互就无法做到这一点 最简单的方法是向服务器端片段发出 AJAX 请求 在 PHP 中 该片段如下所示
  • 将参数传递给上传器/从上传器内部访问模型的属性/让用户选择缩略图大小

    我想将图像裁剪为用户从列表中选择的尺寸 例如 100x100px 200x200px 我如何将该属性传递给上传者或从上传者中获取模型的属性 从上传器内部访问模型的属性如下不起作用 version thumb do thumbnail siz
  • AccessDeniedHandler 重定向到登录页面

    当 在 Spring Security MVC 中 对页面的访问被拒绝时 由于用户没有足够的权限 尽管他已通过身份验证 我需要通过显示登录页面 而不是标准行为 提供以另一个用户身份登录显示 403 访问被拒绝页面 我可以写一个AccessD
  • 如何将 f-string 与变量一起使用,而不是与字符串文字一起使用?

    我想将 f string 与我的字符串变量一起使用 而不是与用字符串文字定义的字符串一起使用 这是我的代码 name deep mahesh nirbhay user input r certi element this string I
  • 从 LAN 上的任何计算机访问 Apache VirtualHost?

    我有 wamp 设置 其中有很多网站设置为 httpd conf 中的虚拟主机
  • MKCircle 没有更新半径,但它正在平移

    我必须将 MKCicle 绘制到 MKMapView 中 然后 当用户通过滑块更改半径时 我必须重新绘制它 我删除它并重新创建它 将其重新添加到地图中 但我并没有按照我的预期进行操作 而是看到 MKCircle 在地图上平移 并保持相同的大
  • 如何使用 pygit2 进行 git 合并

    我尝试将分支合并到主分支中 repo pygit2 Repository path to repo branch repo lookup branch upstream branch pygit2 GIT BRANCH REMOTE oid
  • 如何使用 JSoup 通过表单提交文本

    我想使用 JSoup 向此表单提交一些文本 我该怎么做呢
  • VBA 跟踪文件使用情况

    我目前有一个生成客户报表的 Excel 文件 我需要跟踪谁运行了他们的报表 目前 每当生成语句时 我都会有一个宏向我发送一封包含其用户名的电子邮件 然而 在瘦客户端系统上运行的人们会收到提示 一个程序正在尝试代表您发送电子邮件 有什么方法可
  • 将响应转发到不同的 URL 时,在 API 管理策略表达式中将响应正文从 XML 转换为 Json

    将响应转发到不同的 URL 时 如何将响应正文从 XML 更改为 Json 我专门将响应转发到 Azure 服务总线 我尝试了许多不同的方法将 XML 序列化为 json 但没有成功 因为策略表达式中不允许使用某些 JsonConvert
  • 在本地化系统上强制以英语输出 PowerShell 错误

    我需要在各种操作系统上运行一些 PowerShell 脚本 其中大多数都是英文版本 但是 有些是本地化的 例如德语 法语 西班牙语等 问题是本地系统管理员现在大多不使用 PowerShell 并且在脚本失败并向他们抛出错误的情况下 而不是阅
  • Conda Build - 创建 Conda 包因平台 win-64 的依赖项而失败

    从本地目录构建我的第一个 conda 包 遵循 CONDA 网站的说明 https conda io docs user guide tasks build packages recipe html 我收到以下错误 conda build
  • SonarQube 分析未显示代码覆盖率

    我有一个 Jenkins 项目来对我的 NodeJS 项目进行 SonarQube 分析 我添加了istanbul作为对我的项目的依赖package json 在 Jenkins 构建配置中 首先我运行一个 shell 脚本 cd proj
  • 最佳适应调度算法

    有多个活动 每个活动都有多个会议时间 我需要找到一种会议时间安排 以便每个日程表仅包含任何给定事件一次 使用每个事件的多个会议时间之一 我可以使用暴力 但这很少是最好的解决方案 我更喜欢任何可以阅读此内容的链接 甚至只是一个我可以谷歌搜索的
  • 当我使用添加函数时断言失败

    在一个表中 我有 3 个索引 每个索引调用一个函数 在每个函数中 都有一个添加按钮 用于将数据添加到 CoreData 中 前 2 个有效 但是当我按第三个索引并按 Add 时 会出现此错误 2011 07 19 16 57 11 079
  • Powershell 转义包含密码的变量

    因此 我使用一个包含密码的变量 最近发现某些密码包含特殊字符 我无法控制密码是什么 所以我必须处理我收到的任何内容 我知道后面的勾号 字符是用来转义字符的 这篇文章的全部原因是我发现密码是文本文件 并将找到的密码替换为 xxxxxxxxx
  • 在 Android 中向 gridview 添加页眉和页脚

    我正在尝试在我的 Android 应用程序中创建具有以下功能的用户个人资料页面 标题 gridview 显示该用户的一堆照片 页脚 当应用程序在网格视图中下载更多照片时的下载图标 header需要与gridview一起移动 换句话说 个人资
  • QTableWidget-自动公式驱动单元格

    是否可以使一个单元格成为公式驱动单元格并使其自动更新 与Excel类似 例如 我希望用户填写两个单元格 然后当用户填充两个单元格时 第三个单元格将自动划分 我希望它不连接到按钮 QTable 截图 QTableWidget 的代码 self
  • 每次我使用格式化程序写入txt时,以前写入的内容都会被删除?如何避免这种情况?

    import java io FileNotFoundException import java lang SecurityException import java util Formatter import java util Form
  • Javascript 奇怪的作用域行为

    我一直在研究 Javascript 函数作用域并遇到了这个 var scope global function f console log scope var scope local console log scope f 现在我明白第一个