Javascript 通过引用传递的参数

Javascript 通过引用传递的参数,javascript,function,reference,arguments,Javascript,Function,Reference,Arguments,我有以下JavaScript功能: function insertIntoTable(title, text, sketchFileName, categoryId) { var db = window.openDatabase('xxx', '1.0', 'xxx database', 5*1024*1024); db.transaction( function (tx) { if (sketchFileName == '')

我有以下JavaScript功能:

function insertIntoTable(title, text, sketchFileName, categoryId)
{
    var db = window.openDatabase('xxx', '1.0', 'xxx database', 5*1024*1024);
    db.transaction(
        function (tx) {
            if (sketchFileName == '')
            {
                tx.executeSql('INSERT INTO TableXXX (title, content, created, categoryID) VALUES (?, ?, ?, ?)', 
                            [title, text, Date.now(), categoryId], 
                            function (transaction, resultSet) {
                                if (resultSet.rowsAffected) {
                                    myNameSpace.returnedId = resultSet.insertId;
                                }
                            }, handleSQLError);
            }
        }, handleSQLError);
    );
}
function insertIntoTable(title, text, sketchFileName, categoryId, setReturnedId)
{
    setReturnedId( resultSet.insertId );

}
现在我使用一个全局变量,
myNameSpace.returnedId
,来获取insertId


有没有办法向引用myNameSpace.returnedId的函数
insertIntoTable
添加新参数?

将函数更改为:

function insertIntoTable(title, text, sketchFileName, categoryId, nameSpace) {
...
...
nameSpace.returnedId = resultSet.insertId; // assign this here
并通过以下方式调用该函数:

insertIntoTable(someTitle, someText, someSketchFileName, someCategoryId, myNamespace)
您将传入对myNamespace的引用(在函数中称为
nameSpace
)。
然后,您将有权访问所有
myNameSpace
的属性(并可以为它们赋值)。

您可以使用两个参数引用变量:

function insertIntoTable(title, text, sketchFileName, categoryId, nameSpace, variable)
{
    ...
    nameSpace[variable] = resultSet.insertId;
}
可以这样称呼:

insertIntoTable( ..., myNameSpace, 'returnedId' );
insertIntoTable( ..., function(value){ myNameSpace.returnedId = value } );
另一种方法是使用setter函数:

function insertIntoTable(title, text, sketchFileName, categoryId)
{
    var db = window.openDatabase('xxx', '1.0', 'xxx database', 5*1024*1024);
    db.transaction(
        function (tx) {
            if (sketchFileName == '')
            {
                tx.executeSql('INSERT INTO TableXXX (title, content, created, categoryID) VALUES (?, ?, ?, ?)', 
                            [title, text, Date.now(), categoryId], 
                            function (transaction, resultSet) {
                                if (resultSet.rowsAffected) {
                                    myNameSpace.returnedId = resultSet.insertId;
                                }
                            }, handleSQLError);
            }
        }, handleSQLError);
    );
}
function insertIntoTable(title, text, sketchFileName, categoryId, setReturnedId)
{
    setReturnedId( resultSet.insertId );

}
可以这样称呼:

insertIntoTable( ..., myNameSpace, 'returnedId' );
insertIntoTable( ..., function(value){ myNameSpace.returnedId = value } );

为什么不直接用myNameSpace作为参数调用函数呢?因为我不知道它是如何工作的。嗯??什么是有效的?向函数中添加一个参数-将其命名为myNameSpace或任何其他名称,然后仅使用对象myNameSpace调用函数。然后,您可以访问和修改其上的任何属性(如returnId)。(不确定我是否理解你,但我添加了这个作为答案)。我使用了你的第二个选项,它更通用,更可重用。