控制台说JavaScript数组未定义,但我可以记录它的内容

控制台说JavaScript数组未定义,但我可以记录它的内容,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我有一个数组gradesArray,我可以在我的程序中通过console.loggradesArray看到它,但是当我在Chrome控制台中键入gradesArray或gradesArray.length或类似的内容来访问它时,我得到了ReferenceError:gradesArray没有定义 下面是我用来用Grade对象填充数组的jQuery: 这段代码运行后,console.loggradesArray位工作正常,为我提供了一个漂亮的Grade对象数组。但是当我在控制台中键入gradesA

我有一个数组gradesArray,我可以在我的程序中通过console.loggradesArray看到它,但是当我在Chrome控制台中键入gradesArray或gradesArray.length或类似的内容来访问它时,我得到了ReferenceError:gradesArray没有定义

下面是我用来用Grade对象填充数组的jQuery:

这段代码运行后,console.loggradesArray位工作正常,为我提供了一个漂亮的Grade对象数组。但是当我在控制台中键入gradesArray时,我得到一个引用错误,告诉我变量未定义。另外,在程序的后面,我尝试使用if-typeof-gradesArray!='未定义',但函数不启动

怎么回事?如果我从.js文件中请求,浏览器将记录阵列,但如果我从控制台中请求,则不会记录阵列;而且,即使在我用对象填充它之后,它仍然是未定义的,即使它们显示在控制台中


提前感谢。

当您登录控制台时,gradesArray已超出范围。如果需要,请尝试在全局范围内声明它。

登录控制台时,gradesArray已超出范围。如果需要,请尝试在全局范围内声明它。

您没有复制所有代码;您的代码被包装在另一个函数$function{}中?包含gradesArray的var语句。因为它不是全局变量,所以无法从控制台检查它。最简单的方法是将var语句放在$之外:

var gradesArray = []
$(function () { ... });

您没有复制所有代码;您的代码被包装在另一个函数$function{}中?包含gradesArray的var语句。因为它不是全局变量,所以无法从控制台检查它。最简单的方法是将var语句放在$之外:

var gradesArray = []
$(function () { ... });

您忘记了savegrade您的gradesArray最初声明在哪里?@TimurShahbanov:错误。我在document ready函数的最开始声明了数组。问题解决了,只是忘记将数组声明在$document.readyfunction{…}之外,从而使其成为全局数组;。我一定累了。谢谢大家。你忘了括号savegrade你的grade数组最初声明在哪里?@TimurShahbanov:错。我在document ready函数的最开始声明了数组。问题解决了,只是忘了将数组声明在$document.readyfunction{…}之外,从而使其成为全局数组;。我一定累了。谢谢大家,是的!解决了的。它被包装在documentready函数中。好主意。当然它被包装成了$…,所以它不能用于控制台,+1^^^是的!解决了的。它被包装在documentready函数中。好主意。当然它被包装成了$…,所以它不能用于控制台,+1^^