【问题标题】:strange javascript variable re assignment issue奇怪的javascript变量重新分配问题
【发布时间】:2021-08-04 00:31:13
【问题描述】:

我有一个名为data 的变量,它为函数带来了一个数组。

然后我决定继续只使用数组的第一个元素 (data[0])。如果我做以下任何一个,会有什么不同吗?

  1. 重用/替换数组变量名称data,为其分配第一个元素,即
    data = data[0]

    并继续使用data

  2. 声明一个新变量并将其分配给数组数据的第一个元素,即
    var data_new = data[0]

做第一个有什么问题吗?在任何情况下我应该严格使用第二个而不是第一个?




我之所以问这个问题是因为我遇到了一个与此相关的奇怪问题,当我从获取请求中获取数据时,它在我使用时有所不同第一种方法和第二种方法。

fetch("some json array returning url").then(response=>{
    response.json().then(data => {
    
        data = data[0]
        setState(data);
        return;
        
        // Vs           

        var data2 = data[0]
        setState(data2);
        return;
        
        //based on which is uncommented

    }
}

在我的第一个块中(使用相同的变量data),结果是随机变化的。但是当我使用第二块时,它变得稳定且可预测。

具体来说,对于["data"]形式的数据,使用第一个block时,结果在"data"和"d"之间波动,而使用第二个block时,结果会在"data"和"d"之间波动总是返回“数据”

很抱歉,我无法举出一个完全可重现的例子,但如果有任何可能的理由根据 javascript 语言,基于上述简单的用例,它会真正帮助我。

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    通常,您不想改变函数的参数。执行data = data[0] 可能会导致稍后出现错误。最好创建一个新变量并对其进行更改,例如 var data2 = data[0]

    【讨论】:

      【解决方案2】:

      我看不出这两种方法有什么问题,但是在第一种方法中,由于变量在不同的地方有不同的类型,它会使代码更容易阅读混乱。我更喜欢解决方案 2

      【讨论】:

      • 尽量不要在代码中改变变量的类型,也不要改变从函数中获取的参数。做var modifiedStuff = parameterThing 让它更加一致。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2019-10-04
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多