如何在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 varjavascript有几种方法来获取/设置函数内部的数据,
请参阅:方法-调用、应用和参数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是正确的-数据库接口代码将管理创建参数并将参数传递给函数。