如何在JavaScript中从函数参数调用函数?

如何在JavaScript中从函数参数调用函数?,javascript,Javascript,所以我读了一些网站上的教程,他们做了类似的事情 function populateDB(tx) { tx.executeSql('DROP TABLE IF EXISTS DEMO'); tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');

所以我读了一些网站上的教程,他们做了类似的事情

function populateDB(tx) {
     tx.executeSql('DROP TABLE IF EXISTS DEMO');
     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

function errorCB(err) {
    alert("Error processing SQL: "+err.code);
}

function successCB() {
    alert("success!");
}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

在最后一行中,他们从对象数据库调用了方法事务,参数字段中有3个函数,但是这些函数不是被填充了吗?在哪里调用该参数?

数据库运行时将在需要时调用这些函数,并传入参数。在“db.transaction”函数调用中,您将引用传递给函数。此时,不需要函数参数,因为您只是确定要调用哪些函数。

数据库运行时将在需要时调用这些函数,并传入参数。在“db.transaction”函数调用中,您将引用传递给函数。此时,不需要函数参数,因为您只是确定要调用哪些函数。

这些函数根据回调的设计方式自动接收参数。将引用传递给函数,当回调使用该引用时,它会根据整个机制的构建方式填充参数。基本上,事务对象知道调用您为其提供引用的方法,并传入它打算传入的任何方法。这取决于你确保收集它(因为你正在做)


这有点让人困惑的唯一原因是您还没有打开事务函数。如果您这样做了,您将看到它调用这些函数并传入稍后收集的值)

这些函数根据回调的设计方式自动接收参数。将引用传递给函数,当回调使用该引用时,它会根据整个机制的构建方式填充参数。基本上,事务对象知道调用您为其提供引用的方法,并传入它打算传入的任何方法。这取决于你确保收集它(因为你正在做)


这有点让人困惑的唯一原因是您还没有打开事务函数。如果您这样做了,您将看到它调用这些函数并传入稍后收集的值)

javascript有几种方法来获取/设置函数内部的数据,
请参阅:methods-call、apply和arguments var

javascript有几种方法来获取/设置函数内部的数据,
请参阅:方法-调用、应用和参数var

这些是回调,这意味着
事务
方法将根据成功或失败调用一个或其他CB函数

该方法的工作原理如下:

db.transaction = function(populateDB, errorCB, successCB) {
    // Try to do the requested action
    var tx = performTransaction(populateDB);

    // If the action failed, call the error callback, 
    // otherwise call the success callback
    if (tx==false) {
        var err = new TransactionError();
        return errorCB(err);
    } else {
        return successCB(tx);
    }
}

这些是回调,这意味着
事务
方法将根据成功或失败调用一个或其他CB函数

该方法的工作原理如下:

db.transaction = function(populateDB, errorCB, successCB) {
    // Try to do the requested action
    var tx = performTransaction(populateDB);

    // If the action failed, call the error callback, 
    // otherwise call the success callback
    if (tx==false) {
        var err = new TransactionError();
        return errorCB(err);
    } else {
        return successCB(tx);
    }
}

你必须深入挖掘事务函数才能看到里面发生了什么。你必须深入挖掘事务函数才能看到里面发生了什么。所以你是说javascrip本身会处理好参数,对吧???@qwr:不是JavaScript,语言,但是在
db.transactions
中的某个地方将有一个函数调用
errorCallback(error)
,其中
errorCallback
引用作为参数传递的函数。这并没有什么神奇之处。@qwrqwr Felix Kling是正确的-是数据库接口代码将管理创建参数并将参数传递给函数。所以您是说javascrip本身将正确处理参数???@qwr:Not JavaScript,语言,但是在
db.transactions
中的某个地方将有一个函数调用
errorCallback(error)
,其中
errorCallback
引用作为参数传递的函数。这并没有什么神奇之处。@qwrqwr Felix Kling是正确的-数据库接口代码将管理创建参数并将参数传递给函数。