对 Javascript 的变量范围感到困惑

2024-03-04

我发现自己在 Javascript 的变量范围内,有人可以向我解释为什么第一个示例不起作用但第二个示例起作用吗?

function test() {
  return typeof(the_variable) !== 'undefined' && the_variable;
}

(function () {
   var the_variable = "doesn't work";
   console.log(test());
}());

var the_variable = "does work";
console.log(test());

我在日志中得到的输出:

false
does work

我也想知道如何做与第一个示例类似的事情。


评论中解释:

function test() {
  return typeof(the_variable) !== 'undefined' && the_variable;
}

// The variable in this function is scoped to the anonymous function.
// It doesn't exist outside that function, so `test` cannot see it
(function () {
   var the_variable = "doesn't work";
   console.log(test());
}());

// This variable exists in a scope that wraps the `test` function, so it can see it.
var the_variable = "does work";
console.log(test());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 Javascript 的变量范围感到困惑 的相关文章

随机推荐

  • 使用 ShinyFiles 加载数据文件

    我的 Shiny 应用程序应该加载几个数据文件 为了实现这一目标 我尝试使用ShinyFiles package https github com thomasp85 shinyFiles From ui R shinyFilesButto
  • 包中的 Cython Pickling“未找到”错误

    我在腌制 Cython 类时遇到问题 但仅当它在包内定义时才有效 这个问题被注意到了以前在线 https groups google com forum msg cython users efRRFJVuZh8 x2 R8qHBlCkJ 但
  • 如何在Python中将光标重置到同一行的开头

    SO 中与此主题相关的大多数问题如下 如何在不引入的情况下在同一行打印一些信息 新队 Q1 https stackoverflow com questions 3249524 Q2 https stackoverflow com quest
  • ZF2 文件上传集合

    我无法让我的文件上传集合正常工作 这就是我所做的 https gist github com manuakasam 1ac71daf7269616f55f0 https gist github com manuakasam 1ac71daf
  • Spring websocket - 如何获取会话数

    我在用着this https spring io guides gs messaging stomp websocket 教程 我试图弄清楚如何获取当前会话的数量 我的 WebSocketConfig 如下所示 从教程中复制并粘贴 Conf
  • Spring Boot JacksonTester 自定义序列化器未注册

    尝试运行 Jackson 库来完成一些即将进行的工作 我有以下测试模型 地址 java package com example domain import java time LocalDate import org apache comm
  • 两个值之间的百分比差异

    我使用以下简单的 JavaScript 代码来计算两个值之间的百分比差异 subOBS001 vars obs001acount vars obs001asent divOBS001 subOBS001 vars obs001asent m
  • 在批准之前测试 Facebook 集成

    我想测试一个正在开发的移动应用程序 它将使用 Facebook API 来登录用户并读取共同的好友信息 然而 据我所知 除非应用程序经过验证 否则我无法使用 API 登录用户 但为了验证应用程序 审核团队将 需要测试和验证 我的 Faceb
  • Android Studio - 模拟器:进程已完成,退出代码 -1073741819 (0xC0000005)

    每当我尝试使用模拟器运行 Android 应用程序时 都会出现错误消息 模拟器 进程已完成 退出代码 1073741819 0xC0000005 随着 模拟器 无法初始化模拟帧缓冲区 有什么解决办法吗 您应该擦除 avd 管理器中的数据并冷
  • 如何降级命令行工具 MacOS

    我遇到了动态链接器错误 clock gettime符号所以我按照这篇文章所说的做了通过 RVM 在 OS X 10 11 6 上安装 ruby 2 3 0 时缺少符号 https stackoverflow com questions 39
  • Mongoose 可选搜索查询参数?

    我有以下情况 我需要根据某些参数 如果存在 构建猫鼬查询 IE 如果这样的对象被传递 player nickname action capture 执行以下搜索 Entry find player obj player action obj
  • 如何使用贝塞尔曲线沿着路径制作图像动画

    My goal 沿着如下图所示的路径移动 动画图像 可能连接贝塞尔曲线 必须在 IE7 下工作 不要构建多个解决方案 我可以暂停 恢复移动图像 图像将沿着路径继续移动 重复 我考虑过什么 CANVAS IE7 8不支持 尚未测试explor
  • 如何将 JavaScript 变量插入包含 Jinja 标记的字符串中?

    我有一个 javascript 函数 它尝试动态地将锚标记插入到网页中 其 href 属性是 Flask 路由的 url 这个烧瓶路线接受一个参数username 我想设置username为 JavaScript 变量的值 我尝试过使用模板
  • 内存泄漏是否有可接受的限制?

    我刚刚开始在 C 中尝试 SDL 我认为定期检查内存泄漏可能是尽早养成的好习惯 考虑到这一点 我一直通过 Valgrind 运行我的 Hello world 程序来捕获任何泄漏 尽管我已经删除了除最基本的之外的所有内容SDL Init an
  • 服务暂停时更新活动数据

    假设我有一个包含数据对象的活动 它根据该对象更新其 GUI 组件 现在假设它已暂停 调用 OnPause 但未停止或销毁 同时 收到推送通知 intentservice 已启动 我需要使用推送通知对象更新该对象 以便在应用程序恢复时更新 g
  • jquery ajax调用返回值

    我有一个带有静态页面方法的 asp net 应用程序 我使用下面的代码来调用该方法并获取其返回值 ajax type POST url myPage myMethod data parameter paramValue contentTyp
  • 导入错误:无法导入名称force_text

    我已在 CentOS 计算机中安装了 Python 2 7 和 Django 1 4 并安装了现有项目的所有依赖项 当我跑步时python manage py runserver 我在控制台中收到以下回溯 root localhost bv
  • Mongoose - 由 :: 11000 E11000 重复键错误索引引起?

    为什么我会收到此重复错误 Error creating new user WriteError code 11000 index 0 errmsg insertDocument caused by 11000 E11000 duplicat
  • 尝试从导入的包导入模块时出现“ModuleNotFoundError”

    这是我的目录结构 man Mans man1 py MansTest SoftLib Soft SoftWork manModules py Unittests man1test py man1 py包含以下内容import陈述 我不想改变
  • 对 Javascript 的变量范围感到困惑

    我发现自己在 Javascript 的变量范围内 有人可以向我解释为什么第一个示例不起作用但第二个示例起作用吗 function test return typeof the variable undefined the variable