1

我知道在 Javascript 中,您可以向函数添加额外的参数。例如;

function sum(){

var result = 0;
for(var i = 0;i<arguments.length;i++){
  result += arguments[i];
}
return result;
}

然后调用sum(1,2,3,4)。现在我正在使用 Phonegap,我想将额外的参数传递给一个可调用的对象。(做一些类似于我之前解释的事情。)

在 Phonegap 中,您可以通过以下方式访问文件系统:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail);
function success(fileSystem){
//Do something
 }

有可能做类似的事情吗?

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success(option1, option2), fail);
    function success(fileSystem){
    //Do something
      if(option1 > option2){
       //Do something even interesting
       }

     }

由于我对 Javascript 和 Phonegap 都是新手,我不确定是否可以做这样的事情。我想避免使用全局变量

4

5 回答 5

5
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { return success(fileSystem, option1, option2); }, fail);
    function success(fileSystem, option1, option2){
    //Do something
      if(option1 > option2){
       //Do something even interesting
       }

     }

米?

于 2012-12-18T08:51:17.697 回答
1

也许你可以做一些事情,比如将它全部封装在一个函数中

function doFileSystemStuff(option1,option2){
   window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail);
   function success(fileSystem){
      //Do something
      if(option1 > option2){
       //Do something even interesting
      }
    }
}

然后用option1and适当地调用它option2

于 2012-12-18T08:51:51.327 回答
0
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(option1, option2){ success(option1, option2)}, fail);
function success(fileSystem){
//Do something
  if(option1>option1){
   //Do something even interesting
   }

 }
于 2012-12-18T08:53:09.717 回答
0

很可能不是。

您的成功处理程序在函数中被调用requestFileSystem。我的猜测是该函数不包含任何其他参数。

由于您不想使用全局变量,因此中间有一个解决方案:将所有内容放在一个函数中:

(function() {
    var option1 = 0, option2 = 1;

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail);

    function success(filesystem) {
        console.log(option1, option2); // will display 0 and 1
    }
})(); // calls itself

console.log(option1, option2); // undefined

这样你仍然可以设置option1和`option2,在你的方法中访问它们,而不会使它们全局化!

于 2012-12-18T08:53:45.890 回答
0

像这样做:

function getFileSystem() {

    //set your option1, option2
    var option1 = 1, option2 = 2;

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {

      //Do something

      function innerSuccess(fileSystem, option1, option2) {
       //Do something even interesting

      }
    }, fail);

}
于 2012-12-18T08:55:44.957 回答