【问题标题】:Javascript global variable questionJavascript全局变量问题
【发布时间】:2010-03-10 21:10:12
【问题描述】:

我想显示this video. Please watch... 的问题

我有 2 页。第二页是使用 fResimleriEkle 函数将选定的图片发送到打开器窗口(第一页)。

我将数组的每个元素设置为另一个数组变量(ArrResimler 和 ArrMetinler)。

但是当我通过单击按钮触发 fAlbumOlustur 函数时,我看不到全局变量的值。

全局变量有问题吗?

问题出在图片中:

感谢您的帮助......

【问题讨论】:

  • 很难理解问题出在哪里(上次你问的时候我也看到了)。这两个页面有什么关系?
  • 不要想两页。一个功能是设置两个全局变量(ArrayResimler = ArrayPictures,ArrayMetinler=ArrayText)。但我无法在第二个函数中访问这些变量的值。问题是这样的。
  • 请考虑两页,因为全局变量在窗口范围内是全局的..所以每个页面都有不同的全局变量..
  • 但是这些变量在同一个页面中。只有第一个函数参数来自子窗口。但是我正在将数组的数据解析为包含函数的主页中的全局变量。

标签: javascript


【解决方案1】:

Global variables are bad!另一个关于如何they are bad...

您始终可以在函数中的“缓冲区”参数中传递数组,这更清晰 IMO。

示例:

<script type="text/javascript">
    function WorkWithArray(myArray, someOtherParam)
    {
        if (myArray.constructor.toString().indexOf("Array") == -1)
            return false;

        //Work with myArray here
        myArray[myArray.length] = 'blah';
        return true;
    }
</script>

在 JavaScript 中,我们有函数,并且我们有传递给这些函数的参数。但是 JavaScript 如何处理你传入的内容并不总是很清楚。当您开始进行面向对象的开发时,您可能会发现自己对为什么有时可以访问值但有时不能访问感到困惑。

当传入像字符串或数字这样的原始类型变量时,值是按值传入的。这意味着在函数中对该变量的任何更改都与函数外部发生的任何事情完全分开。

传入一个对象(数组就是一个对象),但是,通过引用传入它。在这种情况下,该对象的任何属性都可以在函数中访问。

请参阅JavaScript: Passing by Value or by Reference 了解更多信息。

【讨论】:

  • 你能用一个简短的例子解释一下吗?
  • 他并没有问他们是否不好 - 你的帖子不是更合适的评论吗?因为你实际上并没有试图回答这个问题?
  • 阅读他的问题。引用:“全局变量有什么问题吗?”。无论如何,添加了有关我提出的解决方案的更多信息和一个示例!
【解决方案2】:

也许我遗漏了一些东西,但你不能为你感兴趣的全局变量设置一个“监视”吗?

【讨论】:

    【解决方案3】:

    错误的行是:

     arrResims = ArrResimler = sResimler
    

    在上述行之后我无法再次设置值。

    【讨论】: