Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么作为函数参数传递的Javascript数组可能会丢失它';当按顺序调用函数时,是否显示内容?_Javascript_Arrays_Function_Parameters_Couchdb - Fatal编程技术网

为什么作为函数参数传递的Javascript数组可能会丢失它';当按顺序调用函数时,是否显示内容?

为什么作为函数参数传递的Javascript数组可能会丢失它';当按顺序调用函数时,是否显示内容?,javascript,arrays,function,parameters,couchdb,Javascript,Arrays,Function,Parameters,Couchdb,我在这里坐了一会儿,想知道为什么在第二次调用函数时会丢失一个数组参数 我正在处理的脚本映射在CouchDB/pockdb之后,并将项目作为JSON字符串存储在多个存储中(包括本地存储)。参数包括: _id id of the item _rev revision string (version), counter and hash _content whatever content _revisions array of all prior hashes a

我在这里坐了一会儿,想知道为什么在第二次调用函数时会丢失一个数组参数

我正在处理的脚本映射在CouchDB/pockdb之后,并将项目作为JSON字符串存储在多个存储中(包括本地存储)。参数包括:

_id         id of the item
_rev        revision string (version), counter and hash
_content    whatever content
_revisions  array of all prior hashes and current counter
_revs_info  all previous revisions of this item with status
我目前正在尝试一个
PUT
操作,默认情况下会更新现有文档。当我使用多个存储时,我还有一个
PUT SYNC
,它将文档的版本从一个存储“复制并粘贴”到另一个存储(目标是每个存储上都有可用的每个版本)。我还保留了一个单独的文件和一个文档树,其中存储了所有版本散列。使用随
PUT
提供的
\u revs\u info
同步时更新此树文件

我的问题是顺序
SYNC put
。第一个有效,第二个我丢失了
\u revs\u info
参数。我不知道为什么

这是我的第一个电话(来自我的QUnit模块),工作正常:

o.jio.put({
    "content":'a_new_version',
    "_id":'myDoc',
    "_rev":"4-b5bb2f1657ac5ac270c14b2335e51ef1ffccc0a7259e14bce46380d6c446eb89",
    "_revs_info":[
        {"rev":"4-b5bb2f1657ac5ac270c14b2335e51ef1ffccc0a7259e14bce46380d6c446eb89","status":"available"},
        {"rev":"3-a9dac9ff5c8e1b2fce58e5397e9b6a8de729d5c6eff8f26a7b71df6348986123","status":"deleted"},
        {"rev":fake_rev_1,"status":"deleted"},
        {"rev":fake_rev_0,"status":"deleted"}
        ],
    "_revisions":{
        "start":4,
        "ids":[
            "b5bb2f1657ac5ac270c14b2335e51ef1ffccc0a7259e14bce46380d6c446eb89",
            "a9dac9ff5c8e1b2fce58e5397e9b6a8de729d5c6eff8f26a7b71df6348986123",
            fake_id_1,
            fake_id_0
            ]}
    },
    function(err, response) { 
       // run tests
    });
但是,当我第二次调用同一个函数时:

o.jio.put({
    "content":'a_deleted_version',
    "_id":'myDoc',
    "_rev":"3-05210795b6aa8cb5e1e7f021960d233cf963f1052b1a41777ca1a2aff8fd4b61",
    "_revs_info":[   {"rev":"3-05210795b6aa8cb5e1e7f021960d233cf963f1052b1a41777ca1a2aff8fd4b61","status":"deleted"},{"rev":"2-67ac10df5b7e2582f2ea2344b01c68d461f44b98fef2c5cba5073cc3bdb5a844","status":"deleted"},{"rev":fake_rev_2,"status":"deleted"}],
    "_revisions":{
        "start":3,
        "ids":[
            "05210795b6aa8cb5e1e7f021960d233cf963f1052b1a41777ca1a2aff8fd4b61",
            "67ac10df5b7e2582f2ea2344b01c68d461f44b98fef2c5cba5073cc3bdb5a844",
            fake_id_2
            ]}

    },
    function(err, response) {
      // run tests
    });
我的脚本失败,因为
\u revs\u info
数组不包含任何内容。我添加的所有其他参数和所有随机参数都会被传输。如果我添加一个
字符串
对象
而不是
数组
,它们也会安全地将其激活到脚本中

但是。。。没有通过

问题:
我已经在这上面坐了几个小时,试图确定我没有找到的要点,但我相当无知。那么,有人知道为什么
数组在Javascript中作为参数传递时会丢失其内容吗

谢谢

编辑

我在我的第一个
SYNC-PUT
之后添加了一个常规的
PUT
,它通过得很好(没有定义
\u revs\u info

JavaScript函数完全有可能改变传入的数组。考虑这个例子:

function removeAll(a) { a.splice(0); }

var arr = [1, 2, 3];
removeAll(arr);
console.log(arr); // empty array

也许你调用的函数会改变数组?嗯,让我试试。。。好主意,还在追踪。。。但我有个嫌疑犯。