神秘的"undefined不是函数”;

Mysterious "undefined is not a function"

本文关键字:函数 undefined quot      更新时间:2023-09-26

我正在竭尽全力解决这个错误。这导致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;
}

这是一个问题,它并没有阐明这个问题。我知道以前有人问过这个问题的变体,但我希望这个错误的通用实例对其他正在学习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的子例程。在这里,我想要使用返回单个值的函数。我知道这可能是一个小错误,但我不明白我做错了什么。任何反馈都很好。

为了解决这些问题,我有一些过程的行为类似于函数传递一个单值数组,该数组将在每次后续调用中被覆盖。所以电话来自:

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。