我读了类似的主题,但找不到答案.
这是代码:
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)}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将数组名称传递给函数,但是如果我还需要传递变量呢?例如
test(bar, bar_arr);
function test(var_name, arr_name) {
var_name = Math.random()*arr_name.length;
Run Code Online (Sandbox Code Playgroud)
它不会起作用.为什么以及如何做到这一点?
您不能在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |