我有两个函数,其中1个将对象推入数组。它调用另一个函数,该函数从对象中删除键并仅存储数组中的值。Javascript范围未设置全局变量
但是,它没有将预期的结果设置到全局数组,我将使用它来处理其余的代码。
var arr1 = [];
function foo(callback){
arr1.push({id: 1},{id: 2});
console.log(JSON.stringify(arr1));
callback(arr1);
}
foo(function(arr1){
\t bar(arr1);
});
function bar(arr1){
\t arr1 = arr1.map(x => x.id);
console.log(JSON.stringify(arr1));
}
console.log(JSON.stringify(arr1)); // I want the result to be [1,2]
我可以无视第二个函数,并把它的所有内容到第一个功能,但是这会使事情变得凌乱,因为在我的实际代码库,功能也相当复杂。那么有什么方法可以解决这个问题吗?
这就是它是如何工作的,因为你传递数组的值到一个被更新的局部变量。你可以看看你应该在这里做什么:https://jsfiddle.net/hkwg04py/ –
@BrettJeffreson但我必须通过我的情况下的数组。否则,这是没用的 – marukobotto
为什么你在这里使用回调概念。你可以在没有它们的情况下做到这一点,并使你的代码简单并达到你想要的,就像我在下面的答案中所展示的一样。 –