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
      }
    }
}

option1次に、 andで適切に呼び出します。option2

于 2012-12-18T08:51:51.327 に答える
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 に答える
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 に答える