javascript 从另一个函数访问变量显示引用错误?

pbpqsu0x  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(113)

我有两个函数。第一个函数计算domcontentloaded和resize上的变量。第二个函数在domcontentloaded和scroll上触发。我需要第二个函数中第一个函数的3个变量来计算一些东西。我试图从第一个函数upme()中获取返回变量数组,以便在第二个函数doso()中使用-我收到此错误poss isn't defined at htmldocument.doso
java 脚本

document.addEventListener('DOMContentLoaded', upme);
  window.addEventListener('resize', upme);
  function upme()
  {
    var rome = document.getElementById("out-cmnt");
    var rect = rome.getBoundingClientRect();
    // console.log(rect.top, rect.right, rect.bottom, rect.left);
    var poss = rect.top + window.scrollY; var iwwr = window.innerWidth;
    var koss = rect.bottom + window.scrollY; var loss = koss - poss; 
    return [poss, loss];
  }
  document.addEventListener('DOMContentLoaded', doso);
  window.addEventListener('scroll', doso);
  function doso()
  {
    lopp = document.getElementById("Web_1920__1");
    hope = lopp.clientHeight; const meme = document.body.scrollHeight;
    const keke = hope/meme; const scsc = window.scrollY;
    var innr = window.innerHeight;
       
    var saka = upme(); // problem here calling 1st function
    var noss = poss - innr + loss; // problem here
  
    if(scsc > noss && window.matchMedia("(min-width: 765px)").matches)
    {
        // doing something
    }
  } 
  doso();

我怎样才能成功地把poss,loss,koss这些变量放到第二个函数doso()-里面呢?请帮帮我。谢谢参与这个社区的每一个人。

gorkyyrv

gorkyyrv1#

调用函数时,只能获取选择为return的值。
如果你想使用它们的名字,你需要用你想要的名字来声明它们。在你的例子中,你只有一个名为saka的数组,其中[0]是poss,[1]是loss。
首先,这里你只能访问poss和loss,因为这是upme函数中返回的仅有的两个变量。
你把它们作为一个数组返回,在javascript中有一个简单的方法来检索和命名数组中返回的变量:

var [poss, loss] = upme();

在这段代码中,假设从该函数返回的数组大小为2,并且希望为每个元素声明1个变量,方法是分别将它们命名为possloss
如果需要更多变量,只需在upme中返回更多变量,然后在调用函数时声明并命名它们。
您也可以创建一个对象,但是这个解决方案对于您的问题来说已经足够好了。

yhqotfr8

yhqotfr82#

更改此行:

var noss = poss - innr + loss;

致:

var noss = saka.poss - innr + saka.loss;

相关问题