[英]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.