簡體   English   中英

如何在函數中設置全局變量

[英]How to set a global variable in function

我通讀了類似的主題,但是找不到答案。

這是代碼:

foo_arr = ["a", "b", "c"]
bar_arr = ["x", "y"]

test(bar_arr);
document.write(bar);

function test(arr_name) {
    bar = Math.random()*arr_name.length;

    if (bar < 1) {test(arr_name)}
}

如您所見,我將數組名傳遞給函數,但是如果我也需要傳遞變量怎么辦? 例如

test(bar, bar_arr);

function test(var_name, arr_name) {
    var_name = Math.random()*arr_name.length;

它不會工作。 為什么以及如何做到這一點?

您不能僅在變量中傳遞(引用)JavaScript中的變量。 即使使用bar_arr ,您也只能傳遞作為對象的數組的“值”-您可以通過這種方式修改對象的屬性,但不能更改bar_arr本身。

要真正“傳遞”變量,請將上述技巧退后一步,然后使用包含變量的對象作為屬性。 在這種情況下,這是所有全局變量都是屬性的window對象:

function test(var_name) {
  window[var_name] = 'foo';
}

test('bar'); // note that the property name is a string, not a variable
alert(bar); // now the global 'bar' is set

如果您只想設置一個全局變量的值,則可以從函數中返回想要的值:

function test(arr_name) {
    return Math.random()*arr_name.length;
}

bar = test(bar_arr);

我真的不確定那是您想要做的,但是很高興能夠提供幫助。

如果var_name是全局變量,您仍然可以在function test訪問它。 例:

var_name; // global
function test(arr_name) {
    var_name = Math.random()*arr_name.length;  // still accessible here

    if (bar < 1) {test(arr_name)}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM