首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制台说JavaScript数组是未定义的,但是我能够记录它的内容

控制台说JavaScript数组是未定义的,但是我能够记录它的内容
EN

Stack Overflow用户
提问于 2013-07-30 23:24:20
回答 2查看 5.2K关注 0票数 2

我有一个数组,gradesArray,我可以在我的程序中用console.log(gradesArray)看到它,但是当我访问它时,输入gradesArraygradesArray.length或类似的东西到(Chrome)控制台,我会得到ReferenceError: gradesArray is not defined

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

代码语言:javascript
复制
$(document).on('click', '#savegrades', saveGrade);

function saveGrade() {                     // grabbing data from a form
    var studentClass = currentClass;
    var studentName = currentStudent;
    var dateStamp = $(this).parents('#gradingform').children('#date').val().replace(/-/g, "");
    var teamwork = parseInt( $(this).parents('#gradingform').children('#teamwork').val() );
    var participation = parseInt( $(this).parents('#gradingform').children('#participation').val() );
    var punctuality = parseInt( $(this).parents('#gradingform').children('#punctuality').val() );
    var professionalism = parseInt( $(this).parents('#gradingform').children('#professionalism').val() );
    var timemanagement = parseInt( $(this).parents('#gradingform').children('#timemanagement').val() );

    var newGrade = new Grade(studentClass, studentName, dateStamp, teamwork, participation,         // create new Grade object from form values
                                punctuality, professionalism, timemanagement);

    alert('class: ' + newGrade.studentClass + ', name: ' + newGrade.studentName + ', date: ' + newGrade.dateStamp + ', teamwork: ' + newGrade.teamwork + ', participation: ' + newGrade.participation + ', punctuality: ' + newGrade.punctuality + ', professionalism: ' + newGrade.professionalism + ', time management: ' + newGrade.timemanagement + ', total: ' + newGrade.total);

    gradesArray.push(newGrade);
    console.log(gradesArray);
}

在运行这段代码之后,console.log(gradesArray)位工作得很好,这给我提供了一个很好的级别对象数组。但是,当我在控制台中输入gradesArray时,会收到一个引用错误,告诉我变量是未定义的。另外,在以后的程序中,我尝试使用if (typeof gradesArray != 'undefined'),但是函数没有触发。

怎么回事?如果我从.js文件中请求数组,浏览器将记录它,但如果我从控制台请求它,它就不会记录;而且,即使我用对象填充了它,它仍然是未定义的,即使它们出现在控制台中。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-30 23:29:27

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

代码语言:javascript
复制
var gradesArray = []
$(function () { ... });
票数 4
EN

Stack Overflow用户

发布于 2013-07-30 23:28:46

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17959154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档