Javascript 如何使用变量

Javascript 如何使用变量,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有一个关于变量的问题 我有两个页面,第一个页面我恢复数据,第二个页面我做一些操作 ActivityPage.js(第一个) 我还有另一页 Operations.js: //this is called from the first page directly write(objectData) { //... this.timestampCheck(objectData.arrayTimestamp); //... } //this is call from the Compon

我有一个关于变量的问题

我有两个页面,第一个页面我恢复数据,第二个页面我做一些操作

ActivityPage.js(第一个)

我还有另一页

Operations.js:

//this is called from the first page directly
write(objectData) {
  //...
  this.timestampCheck(objectData.arrayTimestamp);
  //...
}

//this is call from the ComponentDidMount of the second page.
stopClick() {
  //...
  this.timestampCheck(this.props.arrayTimestamp);
  //...
}
现在我的问题是这个timestampCheck函数:

timestampCheck(timestamp) {
  var int_max = 65536;
  this.base = 0;
  var diff = "";
  var start = parseInt(this.contatore);
  for (let i = 0; i < timestamp.length; i++) {
    let timestamp = parseInt(timestamp[i]);
    diff = (this.base + timestamp) - start;
    if (diffDestro < 0) {
      this.base+= int_max;
      diff += this.base;
    }
    this.tempoReale.push(diff);
  }
}
    var countingValue = 0;

    function timestampCheck(timestamp) {
 
        var int_max = 65536;

        this.base = 0;

        var valueToUse = countingValue > 0 ? countingValue : this.base;

        var diff = 0;

        var start = parseInt(this.contatore);

        for (let i = 0; i < timestamp.length; i++) {

          let timestamp = parseInt(timestamp[i]);

          diff = (valueToUse + timestamp) - start;

          if (diffDestro < 0) {
            valueToUse += int_max;
            diff += valueToUse;
          }

          this.tempoReale.push(diff);

          countingValue = countingValue + diff;
        }
    }
timestamp检查(时间戳){
var int_max=65536;
这个0.base=0;
var diff=“”;
var start=parseInt(this.contatore);
for(设i=0;i
这个函数是从两个函数中调用的
stopClick
write
,这里有一个变量
This.base
。现在我不希望这个变量在离开函数
timestampCheck
时失去它的值。例如,arrayTimestamp的大小大于1000,因此它调用write()函数。在此进行计算并设置this.base的值

此时,如果用户单击停止键,将调用stopClick()函数,该函数调用相同的timestampCheck函数,并且必须恢复this.base的上一个值,而不是从头开始

你认为我怎么能做到


非常感谢。

只需在函数外使用一个变量来存储新值即可

因此,在功能之外:

timestampCheck(timestamp) {
  var int_max = 65536;
  this.base = 0;
  var diff = "";
  var start = parseInt(this.contatore);
  for (let i = 0; i < timestamp.length; i++) {
    let timestamp = parseInt(timestamp[i]);
    diff = (this.base + timestamp) - start;
    if (diffDestro < 0) {
      this.base+= int_max;
      diff += this.base;
    }
    this.tempoReale.push(diff);
  }
}
    var countingValue = 0;

    function timestampCheck(timestamp) {
 
        var int_max = 65536;

        this.base = 0;

        var valueToUse = countingValue > 0 ? countingValue : this.base;

        var diff = 0;

        var start = parseInt(this.contatore);

        for (let i = 0; i < timestamp.length; i++) {

          let timestamp = parseInt(timestamp[i]);

          diff = (valueToUse + timestamp) - start;

          if (diffDestro < 0) {
            valueToUse += int_max;
            diff += valueToUse;
          }

          this.tempoReale.push(diff);

          countingValue = countingValue + diff;
        }
    }
var countingValue=0;
函数时间戳检查(时间戳){
var int_max=65536;
这个0.base=0;
var VALUETUSE=countingValue>0?countingValue:this.base;
var-diff=0;
var start=parseInt(this.contatore);
for(设i=0;i
因此,我在这里所做的是在名为countingValue的函数外部创建一个初始值为0的变量

然后在this.base的初始化下面,我使用了一种称为三元运算符的If语句,它表示如果当前countingValue大于0,那么我们将把该值存储在名为valueToUse的变量中,否则我们将使用此.base值,并将其存储在valueToUse变量中

在代码的其余部分中,我现在使用了valueToUse变量进行计算,而不是this.base


注意:我将变量diff更改为整数,因为它是字符串。如果不完全符合您的要求,您可能需要回顾一下,并交换几个变量。

谢谢您的回答。通过这种方式,我保存了这个值,当从两个函数调用它时,我可以使用它??在我的答案底部检查我更新的答案。它应该按照您希望的方式工作。谢谢您的回答:)但是为什么当我尝试在函数外部声明变量时,它会返回一个错误?我可以问一个关于它的问题吗?你最后说的是:
countingValue=countingValue+diff
但为什么要在每个圆上对值进行校正计数?因为例如,如果我有:
valueToUse=0
timestamp=40
contatore=20
。我有
diff=20
,所以我的
countingValue=20
。但是在下一个循环中,
valueToUse
等于0(this.base),而不是
countingValue
我想您只需要在函数开始时停止将
this.base
设置为0,在函数外部初始化它