Javascript 声明对象在检查后未定义?

标签 javascript

我在相当简单的 javascript 代码上发生了相当奇怪的错误。主要是代码声称某些属性在事先明确使用过它们时未定义。我将提供两个简单的示例:

enter image description here

该函数接受一个对象数组并返回下拉列表的 html。 stop 变量已被分配给传入数组的长度,定义行上会抛出错误。奇怪的是紧随其后的一行; console.log("DO I HAVE A LENGTH?"+stop) 运行得很好。我可以使用注释的 if (arr) 代码解决此问题。不幸的是,错误又回到了这里:

enter image description here

正如您通过绘制不佳的 mspaint 箭头所看到的,JavaScript 声称未定义的属性已在代码的前面进行了检查。任何关于可能发生的事情的想法,这都让我发疯!

请并感谢您的帮助!

最佳答案

第二个问题是变量“a”和“b”需要在这两个函数中用 var 声明。

这可能也是第一个问题。

因为您没有声明它们,这意味着这两个函数都会影响全局变量“a”和“b”,本质上是互相搞乱。

养成一个非常好的习惯就是打字

"use strict";

当您启动任何新的 JavaScript 代码文件时。在这种情况下,这会使对“a”和“b”的引用抛出错误。只需放入

var a, b;

在这两个函数中。

关于Javascript 声明对象在检查后未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19708854/

相关文章:

javascript - 如何将ng-bind-html与双向数据绑定(bind)一起使用?

javascript - ssh2 模块静默失败,凭据从 CLI 成功

JavaScript 数组澄清

javascript 或 jquery : show multiple variables in one alert

javascript - npm 错误 : cb() never called, 我该怎么办?

java - GWT:如何从多部分表单(文件)上传中返回(和处理)错误

javascript - 对象作为 React 子对象无效(对象到字符串的转换)

javascript - 通过node.js中的回调函数传递变量

javascript用字符串创建网格

javascript - ES6 Map Reduce 数组通过 Redux 状态的映射和填充变平