我知道,在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,所以我不确定是否可以这样做。我想避免使用全局变量。
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
}
}
m?
也许您可以做类似的事情,将其全部封装在函数
中function doFileSystemStuff(option1,option2){
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail);
function success(fileSystem){
//Do something
if(option1 > option2){
//Do something even interesting
}
}
}
然后用option1
和option2
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(option1, option2){ success(option1, option2)}, fail);
function success(fileSystem){
//Do something
if(option1>option1){
//Do something even interesting
}
}
很可能不是。
您的成功处理程序在函数requestFileSystem
中被调用。我的猜测是该函数不包含任何其他参数。
由于您不想使用全局var,因此中间有一个解决方案:将所有内容都放在函数中:
(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,在方法中访问它们,而无需使它们全局!
这样做:
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);
}