Javascript 无法解释的未捕获类型错误:未定义不是函数
我在Chrome上运行以下代码时遇到了这个错误:UncaughtTypeError:undefined不是一个函数,在这行它是作为注释编写的。我已经在互联网上寻找类似的问题好几天了,但我的问题没有得到解决。下面是JS代码:Javascript 无法解释的未捕获类型错误:未定义不是函数,javascript,undefined,Javascript,Undefined,我在Chrome上运行以下代码时遇到了这个错误:UncaughtTypeError:undefined不是一个函数,在这行它是作为注释编写的。我已经在互联网上寻找类似的问题好几天了,但我的问题没有得到解决。下面是JS代码: var myArr = []; function loadExams() { var token = getCookie("token"); var avgArr = []; var avgZero = { sAvg: 0,
var myArr = [];
function loadExams() {
var token = getCookie("token");
var avgArr = [];
var avgZero = {
sAvg: 0,
sCfu: 0,
uDate: ""
};
dataIn = {
"action": "loadExams",
"token": token
};
ajaxPost(dataIn, "localPHP.php", function(dataOut) {
for (var i = 0; i < dataOut.length; i++) {
$("#editPick").append("<option value=" + dataOut[i]['n'] + ">" + dataOut[i]['sub'] + ": " + dataOut[i]['mark'] + " (" + dataOut[i]['date'] + ")" + "</option>");
if (i === 0) {
console.log(avgArr); //ok
console.log(dataOut[0]); //ok
console.log(avgZero); //ok
avgArr[0] = avg(dataOut[0], avgZero); //HERE ERROR >>>>>>>>>>>>>>> Uncaught TypeError: undefined is not a function <<<<<<<<<<<<<<<<<<<
} else {
avgArr[i] = avg(dataOut[i], avgArr[i - 1]); // same error here!
}
}
for (i = 0; i < myArr.length; i++) {
avg += myArr[i].mark * myArr[i].cfu;
cfu += myArr[i].cfu * 1;
}
i = dataOut.length - 1;
var avg = avgArr[i].sAvg / avgArr[i].sCfu;
document.getElementById('avg').innerHTML = Math.round(avg * 100) / 100;;
});
}
function avg(cur, prev) {
var avgTmp = {
sAvg: prev.sAvg,
sCfu: prev.sCfu,
uDate: cur.date
};
if (cur.type === "full") {
avgTmp.sAvg += cur.mark * cur.cfu;
avgTmp.sCfu += cur.cfu * 1;
} else {
for (var j = 0; j < myArr.length; j++) {
console.log(i + " " + cur.sub + " <> " + j + " " + myArr[j].sub);
if (myArr[j].sub === cur.sub) {
avg += (myArr[j].mark + cur.mark) / 2 * cur.cfu;
cfu += cur.cfu * 1;
myArr.splice(j, 1);
var flag = true;
break;
}
if (!flag) {
j = myArr.length;
var tmp = {};
tmp.sub = cur.sub;
tmp.mark = cur.mark;
tmp.cfu = cur.cfu;
myArr[j] = tmp;
}
}
}
console.log(avgTmp);
return avgTmp;
}
function ajaxPost(data, php, callback) {
ax = $.ajax({
type: "POST",
data: data,
url: php,
success: function (raw_data) {
f = $.parseJSON(raw_data);
callback(f);
},
error: function (xhr, desc, err) {
console.log("xhr: " + xhr + "\nAjax error. Details: " + desc + ", Error:" + err);
}
});
}
var myArr=[];
函数loadtests(){
var token=getCookie(“token”);
var-avgArr=[];
var avgZero={
sAvg:0,
sCfu:0,
乌达特:“
};
数据输入={
“操作”:“加载测试”,
“代币”:代币
};
ajaxPost(数据输入,“localPHP.php”,函数(数据输出){
对于(var i=0;i avgArr[0]=avg(dataOut[0],avgZero);//此处错误>>>>>>>>>>>>>>>>>>>>>未捕获类型错误:未定义不是一个函数我认为这是因为在函数loadexamies
中有一个语句
var avg = avgArr[i].sAvg / avgArr[i].sCfu;
这将影响你的函数定义(因为它在一个更内部的范围内)。重命名为变量为其他(或函数)
作为一种最佳实践,在作用域的顶部定义变量,这样更容易跟踪。下面是一个复制该问题的最简单示例:function bar(){};function foo(){bar();var bar;}
。这是一个愚蠢的错误吗?非常抱歉!感谢您宝贵的帮助!以及您的建议