我应该在 for in 构造中使用 var 吗?

2024-02-06

我在一段 JavaScript 逻辑中使用了 for in 循环。 我应该使用 var 关键字吗?

当我按照 W3School 的示例运行 for-in 循环时,如果没有 var,那么作为副作用,它被定义为全局范围(窗口)上的属性:

(function () {

  var object = {
      a: 1,
      b: 2
  }
  for (varName in object) {
      alert(varName + " is" + object[varName])
  }

})();

alert(window.varName) //Returns "b" !
//This returns undefined when the for-in is rewritten as for (var varName in object).

编辑:这是上面代码的小提琴供您欣赏:http://jsfiddle.net/94uEh/ http://jsfiddle.net/94uEh/

哪一种是正确的、首选的形式? - 请注意,我希望支持 IE 8 (EcmaScript


你应该总是使用var,如果您希望该值是本地的。

使用关键字object对于变量,不推荐,您可能会在浏览器中遇到未定义的行为。

此外,您通常应该避免应用任何被认为是全局范围内的本地内容。

这不好:

for (varName in object) {
    alert(varName + " is" + object[varName])
}

这是对的:

for (var varName in object) {
    alert(varName + " is" + object[varName])
}

如果您需要在全局范围内访问该值,那么您可能做错了。同样,将其放在全局范围内也是无用的,因为它只是存在于 varName 中的最后一个值。

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

我应该在 for in 构造中使用 var 吗? 的相关文章

随机推荐

  • AngularJS TypeError:在 Object.stringify(本机)处将循环结构转换为 JSON

    我正在尝试让这段代码正常工作 显然 代码中有循环引用 但我找不到它 有人可以帮我吗 var appjson APP DATA RETRIEVED fail var appPostRequest get appurl data appconf
  • 使用 Regex C# 删除 HTML 标签的样式

    我想使用 C 从 HTML 标签中删除样式 它应该只返回 HTML 简单标签 对于即 如果String p style margin 15px 0px padding 0px border 0px Hello p 然后它应该返回String
  • 不包含带有 0 个参数的构造函数

    我收到一条错误消息 指出以下代码中的 Products 不包含采用 0 个参数的构造函数 public class Products string id string name double price int soldCount int
  • 使用复选框从数据库表中删除行

    我想在表中显示数据库中的记录 每行都有复选框 该复选框将确定用户是否要删除该特定行 如果选中 我能够显示数据库中的数据 但是当我按下删除按钮时什么也没有发生 我不确定 但我认为错误在于我删除了部分代码 但我可能是错的 我不知道 无论如何 这
  • 使用自定义 Gson 反序列化器反序列化 JSON 响应时出错

    在我使用 Retrofit 的 Android 应用程序中 我尝试反序列化具有包装项目列表的外部对象的 JSON 我使用 GsonConverterFactory 和 Retrofit 实例来反序列化 JSON 我创建了一个自定义反序列化器
  • 是否可以获取Mysql中按列名分组在一起的行列表?

    在我的数据库中 我有一个名为 结果 的表 其中有四列 名称 设备 通过 失败 假设表中有 4 行 如下所示 name device passed failed test1 device 1 2 1 test1 device 2 3 0 te
  • 如何在 iPhone 的 pdf 页面中使用 CGPDFScanner 查找字坐标?

    我正在使用 CGPDFScanner 解析 pdf 页面 但我无法找到搜索结果的坐标 在 void Tm1 CGPDFScannerRef Scanner void info 中 我只获取某些单词的坐标 而不是 pdf 中每个单词的坐标 如
  • tensorflow有没有类似pytorch的“masked_fill_”的功能

    我想通过掩码矩阵将 INF 值设置为矩阵 就像 pytorch 代码一样 scores data masked fill y mask data float inf 我尝试使用tf map fn实现这一点 但性能太慢 那么tensorflo
  • undertow-handlers.conf 中的规则将 HTTP 重定向到 HTTPS

    我在负载均衡器后面有一个 Wildfly 它们之间的连接始终是 HTTP 客户端和负载均衡器之间的连接可以是 HTTP 或 HTTPS 负载均衡器设置一个标头 X Forwarded Proto 来让 Wildfly 知道客户端正在使用哪个
  • 为我的对象实现 Save 方法

    我正在尝试改进应用程序的设计 因此不是从表示层调用数据访问层 我将尝试从 BusinessObjects 层中的对象实现保存方法 但我不确定如何通过图层传递对象或其属性 例如 在我的旧设计中 我只是在表示层中创建对象的实例并分配它的属性 然
  • C中数组相关函数参数的区别

    我定义了一个数组 float array 3 4 5 那么 当 array array 0 array 0 0 array 0 0 0 用作函数参数 需要了解的重要一点是 在 C 中 数组并不是完整地作为参数传递的 相反 传递的是指向数组第
  • ui 路由器不会将内容放入指定的 ui-view 中

    当我进入路线时 projects 100 dates 2014 01 01 在 url 中并按回车键 我得到 项目 状态 我预计会触发 projects selected dates 状态 为什么路由不起作用 实际上它在我的机器上本地运行
  • iPhone 横向 - iOS7 R4 图像资源仅无启动图像

    我相当确定这是一个错误 但如果有人找到解决方法 请告诉我 我已经在 Xcode 5 中设置了启动图像的资产目录 如果我设置 iOS 7 R4 图像 则仅当我的应用程序支持纵向方向时才使用它 我的应用程序仅横向显示 我看不到启动图像 iOS
  • 如何在 php 中创建类似 twitter 的 search.json

    我在我的网站上创建了一个 search php 文件 它生成一个 JSON 字符串 帮助我为我的应用程序使用实时 ajax 但现在 我想将它作为 API 向其他人开放 但我发现 get getJSON ajax 不允许使用来自其他服务器 域
  • 使用 Django dumpdata 转储整体数据的子集?

    我正在尝试使用 dumpdata 为数据库生成 JSON 该数据库对于 django 来说足够大 需要很长一段时间才能输出 有没有办法只转储字段的子集 比如说 100 用于测试 我正在使用 MySQL 和 Django 1 0 第三方 dj
  • Plotly:如何在桑基图中设置节点位置?

    样本数据如下 unique list home0 page a0 page b0 page a1 page b1 page c1 page b2 page a2 page c2 page c3 sources 0 0 1 2 2 3 3 4
  • 如何使用冒泡排序对链表进行排序?

    我正在尝试使用冒泡排序来对链接列表进行排序 我使用 curr 和 Trail 来遍历列表 curr 应该总是比 Trail 领先一步 到目前为止 这是我的代码 void linked list sort int i j 0 int coun
  • 将 Docker 镜像内的用户切换为非 root 用户

    我正在尝试将用户切换到 tomcat7 用户以设置 SSH 证书 当我做su tomcat7 什么都没发生 whoami完成后仍然会rootsu tomcat7 Doing a more etc passwd 我得到以下结果 清楚地表明 t
  • 如何通过给出正在运行的进程名称来获取窗口句柄?

    如何通过在 c 中给出进程名称或窗口标题来获取窗口句柄 假设进程已经在运行 您可以使用Process class Process processes Process GetProcessesByName someName foreach P
  • 我应该在 for in 构造中使用 var 吗?

    我在一段 JavaScript 逻辑中使用了 for in 循环 我应该使用 var 关键字吗 当我按照 W3School 的示例运行 for in 循环时 如果没有 var 那么作为副作用 它被定义为全局范围 窗口 上的属性 functi