我正在试着解决这个错误。这导致Uncaught TypeError: undefined is not a function
:
trange[abs][i] = BENTON(e1, z1, pa1, pI_pot, pz2, pa2);
这是我的功能:
function BENTON(e1f, z1f, a1f, I_potf, z2f, a2f) {
//my stuff
BENTON_return = ((a1f / TAU) / (z1f * z1f)) * (prnglo[q] + bzz * cz[n]);
return BENTON_return;
}
有this,但没有说明这个问题。我知道之前已经问过这个问题的变体,但是我希望这个错误的通用实例对其他也在学习JS的人有用。任何意见都将不胜感激。
为了清楚起见,这里有一些代码可以将这个问题放在更好的环境中:
function Dreamweaver() {
"use strict";
...
trange = new Array(1);
for (i = 0; i < trange.length; i = i + 1) {
trange[i] = new Array(MAXE);//create a new 2-D array
}
...
i = 0;
do {
e1 = tenerg[i];
trange[abs][i] = BENTON(e1, z1, pa1, pI_pot, pz2, pa2);
i = i + 1;
} while (tenerg[i] < 8.0);
...
}
function BENTON(e1f, z1f, a1f, I_potf, z2f, a2f) {
"use strict";
...
//a lot of mathematics
bzz = (31.8 + 3.86 * Math.exp((5.0 / 8.0) * logi)) * (a2f / z2f) * 1.0E-06 * Math.exp((8.0 / 3.0) * Math.log(z1f));
BENTON_return = ((a1f / TAU) / (z1f * z1f)) * (prnglo[q] + bzz * cz[n]);
return BENTON_return;
}
JSLint回应了'BENTON' was used before it was defined
的投诉。我以前成功完成了这种事情,在那里我构造了JS等效的子程序。在这里,我想要使用返回单个值的函数。我知道这可能是一个小错误,但我只是看不出我做错了什么。任何反馈都会很棒。
答案 0 :(得分:0)
要解决这些问题,我的程序就像函数一样,传递一个为每个后续调用覆盖的单值数组。所以电话来自:
trange[i] = BENTON(e1, z1, pa1, pI_pot, pz2, pa2);
...到...
BENTON(e1, z1, pa1, pI_pot, pz2, pa2, reichweite);
trange[i] = reichweite[0];
我的功能来自:
function BENTON(e1f, z1f, a1f, I_potf, z2f, a2f) {
//my stuff
BENTON = ((a1f / TAU) / (z1f * z1f)) * (prnglo[q] + bzz * cz[n]);
return BENTON;
}
...到...
function BENTON(e1f, z1f, a1f, I_potf, z2f, a2f, reichweite) {
//my stuff
reichweite[0] = ((a1f / TAU) / (z1f * z1f)) * (prnglo[q] + bzz * cz[n]);
return reichweite;
}
另一方面,对于行为类似于子程序的过程,我传递一个多值数组[]
,该数组被主动填充而不被覆盖。
希望这将有助于那些新的JS。