javascript - 控制台显示 JavaScript 数组未定义,但我能够记录其内容

标签 javascript jquery arrays object

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

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

$(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) 位工作正常,为我提供了一个很好的 Grade 对象数组。但是当我在控制台中键入 gradesArray 时,我收到一个引用错误,告诉我该变量未定义。此外,在程序的后面,我尝试使用 if (typeof gradesArray != 'undefined'),但该函数没有触发。

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

提前致谢。

最佳答案

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

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

关于javascript - 控制台显示 JavaScript 数组未定义,但我能够记录其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959154/

相关文章:

javascript - NodeJS Crypto加密到前端javascript解密

javascript - 仅使用 Javascript 更正删除后的行的序列号

javascript - 为第一个值添加 cookie 和未定义值

jquery - 如何使用 stellar.js(用于滚动的 jquery 插件)?

javascript - 对非数组使用数组原型(prototype)函数

javascript - jQuery移动动态分割按钮 ListView

javascript - Flask send_file 作为附件没有响应

c - 在这种情况下,数组索引中的字符表示如何工作?

java - 如何搜索整个数组然后返回 1 个东西

c - 在 C 程序中打印比计算出的平均字数更长的内容