Я написал этот код, который работает, но я не вижу, вложенную функцию, как правило, так что я думаю, что я могу написать это в лучшую сторону:Javascript правильный стиль избежать вложенных функций
function onSuccess(imageURI) {
function errorHandlerFS(e) {
//code managing error
}
function onSuccessFS(fs){
window.resolveLocalFileSystemURL(imageURI,function(fileEntry){//here I reference the variable imageURI
//do something
}, errorHandlerFS);
}
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, onSuccessFS, errorHandlerFS);
}
$('#shootImg').click(function(){
cameraProp.sourceType = Camera.PictureSourceType.CAMERA;
navigator.camera.getPicture(onSuccess, onFail,cameraProp);
});
Здесь нажмите на #shootImg активирует onSuccess проходящий образURI.
Затем, если window.requestFileSystem успешно вызывает вызовыSuccessFS.
Здесь возникает моя проблема.
Поскольку мне нужно изображениеURI в onSuccessFS, я написал onSuccessFS, вложенное внутри onSuccess. Я думаю, что этого можно избежать, но если бы я написал onSuccessFS вне onSuccess, переменная imageURI была вне ее области.
Пожалуйста, сосредоточьтесь только на javascript.
Кто сказал вам избегать вложенных функций? ИМХО вышеприведенный код довольно чистый и хорошо продуманный. – 2014-09-28 10:06:21
Потому что я их не вижу много ... возможно, я никогда не видел вложенных функций ... Может быть, – Ferex
Возможно, вы их не видели, потому что некоторые языки их не поддерживают. В JavaScript вложенные функции часто являются отличным способом учета и структурирования логики. Далеко не встраивание 'onSuccessFS' внутри' onSuccess' является «чем-то, чего следует избегать», это правильный способ закрыть параметр «imageURI». – 2014-09-28 10:34:15