我在相当简单的 javascript 代码上发生了相当奇怪的错误。主要是代码声称某些属性在事先明确使用过它们时未定义。我将提供两个简单的示例:
该函数接受一个对象数组并返回下拉列表的 html。 stop 变量已被分配给传入数组的长度,定义行上会抛出错误。奇怪的是紧随其后的一行; console.log("DO I HAVE A LENGTH?"+stop) 运行得很好。我可以使用注释的 if (arr) 代码解决此问题。不幸的是,错误又回到了这里:
正如您通过绘制不佳的 mspaint 箭头所看到的,JavaScript 声称未定义的属性已在代码的前面进行了检查。任何关于可能发生的事情的想法,这都让我发疯!
请并感谢您的帮助!
最佳答案
第二个问题是变量“a”和“b”需要在这两个函数中用 var
声明。
这可能也是第一个问题。
因为您没有声明它们,这意味着这两个函数都会影响全局变量“a”和“b”,本质上是互相搞乱。
养成一个非常好的习惯就是打字
"use strict";
当您启动任何新的 JavaScript 代码文件时。在这种情况下,这会使对“a”和“b”的引用抛出错误。只需放入
var a, b;
在这两个函数中。
关于Javascript 声明对象在检查后未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19708854/