Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google应用程序脚本中的变量分配问题_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript Google应用程序脚本中的变量分配问题

Javascript Google应用程序脚本中的变量分配问题,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,EDIT:我意识到我遇到的许多事情都是更新的v8gas运行时的工件。现在更新问题以反映这些变化。 我在谷歌应用程序脚本中遇到了一些有趣的行为。 我已经编写了一个小的演示函数来演示这种行为 下面的函数是一个包装函数,它允许我测试“PhaseToSequenceIssuedExpression”函数 函数testPhaseToSequence(){ var phaseSequenceArray=PhaseToSequenceIssuedExpression([26.1877,21.333],[17

EDIT:我意识到我遇到的许多事情都是更新的v8gas运行时的工件。现在更新问题以反映这些变化。

我在谷歌应用程序脚本中遇到了一些有趣的行为。 我已经编写了一个小的演示函数来演示这种行为

下面的函数是一个包装函数,它允许我测试“PhaseToSequenceIssuedExpression”函数

函数testPhaseToSequence(){
var phaseSequenceArray=PhaseToSequenceIssuedExpression([26.1877,21.333],[17.828,-102.813],[10.812139.288]);
Logger.log(“相序阵列:“+phaseSequenceArray”);

}
使用
=
实际上并不会创建阵列的深层克隆,因此
total
phasorray
基本相同。您可以使用或创建深度克隆

//浅克隆
VarA=[1,2,3];
var b=a;
b、 forEach(函数(val,i){
b[i]=val*2;
});
console.log(a);//[2, 4, 6]

控制台日志(b);//[2,4,6]
使用
=
实际上并不会创建数组的深层克隆,因此
total
phasorray
基本相同。您可以使用或创建深度克隆

//浅克隆
VarA=[1,2,3];
var b=a;
b、 forEach(函数(val,i){
b[i]=val*2;
});
console.log(a);//[2, 4, 6]

控制台日志(b);//[2,4,6]
我可以在您的代码中看到四个问题,但您对最后两个问题感兴趣:

  • testPhaseToSequence
    中,将
    phaseToSequenceIssueDemonstration
    分配给变量,但
    phaseToSequenceIssueDemonstration
    不返回任何内容

  • 在函数
    phaseToSequenceIssuedInstance(phaseArray)
    中,您可以调用未在任何地方定义的函数
    arrayPolarToCart
    。但是,您已经定义了
    arrayCartToPolar
    ,因此请修复该问题

  • 最后但并非最不重要的一点,这应该是你问题的答案。在
    phaseToSequenceIssuedInstance
    中,您将
    PolarArraray
    传递给
    arrayCartToPolar
    。如您所见,此函数修改数组,因此在调用该函数后会得到不同的结果。怎么用?将
    polarArray
    引用传递给
    arrayCartToPolar
    ,然后将此引用传递给
    total
    。请记住,现在
    array
    total
    引用的完全相同的对象,即
    Polarray
    。这意味着,无论您在
    total
    array
    上做了什么更改,它都将反映到
    Polarray
    上,这就是调用
    arrayCartToPolar
    后获得不同输出的原因

  • 基于相同的逻辑,
    phaserray
    将其引用传递给
    polarArray
    。因此,无论您对
    polarArray
    所做的任何更改都会立即反映到
    Phasarray
    。这就是为什么
    polarray
    phaserray
    返回相同的值。只是因为它们指的是同一个对象


这不是谷歌应用程序的脚本行为,而是JavaScript行为,它实际上是许多其他编程语言的常见行为。因此,我建议您熟悉范围和定义。是一个很好的资源。

我可以在您的代码中看到四个问题,但您对最后两个问题感兴趣:

  • testPhaseToSequence
    中,将
    phaseToSequenceIssueDemonstration
    分配给变量,但
    phaseToSequenceIssueDemonstration
    不返回任何内容

  • 在函数
    phaseToSequenceIssuedInstance(phaseArray)
    中,您可以调用未在任何地方定义的函数
    arrayPolarToCart
    。但是,您已经定义了
    arrayCartToPolar
    ,因此请修复该问题

  • 最后但并非最不重要的一点,这应该是你问题的答案。在
    phaseToSequenceIssuedInstance
    中,您将
    PolarArraray
    传递给
    arrayCartToPolar
    。如您所见,此函数修改数组,因此在调用该函数后会得到不同的结果。怎么用?将
    polarArray
    引用传递给
    arrayCartToPolar
    ,然后将此引用传递给
    total
    。请记住,现在
    array
    total
    引用的完全相同的对象,即
    Polarray
    。这意味着,无论您在
    total
    array
    上做了什么更改,它都将反映到
    Polarray
    上,这就是调用
    arrayCartToPolar
    后获得不同输出的原因

  • 基于相同的逻辑,
    phaserray
    将其引用传递给
    polarArray
    。因此,无论您对
    polarArray
    所做的任何更改都会立即反映到
    Phasarray
    。这就是为什么
    polarray
    phaserray
    返回相同的值。只是因为它们指的是同一个对象


这不是谷歌应用程序的脚本行为,而是JavaScript行为,它实际上是许多其他编程语言的常见行为。因此,我建议您熟悉范围和定义。是一个很好的资源。

什么是
ArrayPolareTocart()
做的?我将在问题中包含有关此函数的信息。什么是
ArrayPolareTocart()
做的?我将在问题中包含有关此函数的信息。这里有一些有用的要点。我对旧的Rhino运行时(ES5)非常熟悉,以至于GAS以前一直在运行