为函数中的现有数组(全局变量)分配新值不起作用.为什么
Assigning new value to an existing array (global var) within a function doesn't work. Why?
var array1 = [1, 2, 3, 4, 5];
下面的函数 1 为数组分配一个全新的值,不起作用
function changeArray(array) {
array = ["A", "B", "C"];
};
函数 2,它只是修改数组中的一个元素,确实有效
function addArray(array) {
array.push(6);
}
如果我在 array1 上运行函数 1 (changeArray),然后尝试打印 array1,它保持不变。但是,运行函数 2 (addArray) 确实会在数组中添加另一个元素 "6"。我错过了什么?
您正在为标识为"array"的上下文命名空间位置分配一个新值。您应该将调用视为:
function changeArray() {
var thisNamespace = {}; // Not a real variable
thisNamespace["array"] = arguments[0];
// ...
thisNamespace["array"] = ["A", "B", "C"];
}
我希望很明显这不会取代原始参数,但您仍然可以修改数组,因为这不是赋值。如果你真的想通过函数进行赋值,你应该使用它的返回值或闭包。
function foo(bar) {
return ["A", "B"];
}
var x = ["C"];
x = foo(x);
或:
function foo(baz) {
baz(["A", "B"]);
}
var x = ["C"];
foo(function(bar) {
x = bar;
});
您必须在函数中按名称调用原始数组。 原始数组是一个全局变量,因此您无需将其作为参数传递。
var array1 = [1, 2, 3, 4, 5];
console.log(array1);
changeArray();
console.log(array1);
function changeArray() {
array1 = ["A", "B", "C"];
};
相关文章:
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 将 Ajax 数据分配给全局变量时出现问题
- 没有在函数外部分配全局变量
- 未分配 JavaScript/jQuery 全局变量
- 将全局变量分配给以下 Javascript
- Web套接字在分配给全局变量时不起作用
- 将 rails 值分配给全局变量并在 javascript 中使用它
- 为函数中的现有数组(全局变量)分配新值不起作用.为什么
- 在 Jquery 中为语言切换器分配一个全局变量
- 如何将从$promise返回的数据分配给全局变量
- 我应该如何处理Resharpers检查器提示'使用可能未分配的属性或全局变量'
- 从async.waterfall分配全局变量
- 如何将函数分配给全局变量
- 将ajax响应分配给一个全局变量
- 从JSON文件中获得的值保留在解析函数上;t被分配给全局变量
- JS Geocoder无法为Google Maps变量分配全局变量
- 如何使用Node.js和Redis为for循环分配全局变量
- 是否有一种方法来猜测,如果一些全局变量已分配
- 使用全局变量为动态创建的元素分配唯一id和唯一名称
- 全局变量分配节点从脚本vs命令行