В JavaScript, PL / SQL и некоторых других языках функции могут быть вложенными, т.е. объявляться в другой функции. Это можно использовать, чтобы разбить большую функцию на более мелкие части, но оставить эти части в контексте большей функции.
function doTooMuch() {
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
// doTooMuch body
doSomething();
doSomethingElse();
doYetAnotherThing();
}
В некоторых случаях, когда эти меньшие функции не используют локальные переменные большей функции, это может быть легко изменено на версию, в которой все функции неопубликованы.
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
function doTooMuch() {
doSomething();
doSomethingElse();
doYetAnotherThing();
}
Предполагая, что эти вложенные функции не должны использоваться где-либо еще, лучше ли держать их в контексте большой функции или это плохо, потому что именно это делает большую функцию, ну, в общем, большой?
источник
jquery(function($){ $('#id').click(function(){...}); }
Это один из тех вопросов, на которые нет правильного ответа, и на ум приходят такие слова, как «личные предпочтения», «командная практика». По моему мнению, маленькие функции (теперь это еще одна субъективная вещь), которые нигде не используются, принадлежат их родительским функциям, особенно когда они могут быть безымянными.
источник
На этот вопрос нет правильного ответа, потому что ни один из вариантов не максимизирует инкапсуляцию. Если вы вложите их, у них все еще есть доступ к переменным, которые они не должны иметь. Если нет, то другие функции имеют доступ к функциям, которых они не должны иметь. В любом случае, вы проиграли.
источник