Мне нужно знать разницу между функциями и переменными, определенными без использования $ scope (например, $ scope.myfunction = function() {}).
Мне нужно знать, могу ли я определить переменную или функцию внутри контроллера, не делая ее свойством $ scope, какова будет область этих переменных/методов? будет ли он областью $ windows?
Если я хочу определить некоторые функции внутри моего контроллера для организации моего кода, нормально ли определять эти функции без метода $ scope?
Какова наилучшая практика?
Функция всплытия javascript все равно применяется. В этом отношении нет ничего особенного в этом вопросе. Вы можете прочитать об этом здесь: Какова область переменных в JavaScript?
Затем вы узнаете, что функции, объявленные внутри контроллера (или функции), не будут областью окна. Вполне нормально определять функции, которые не являются объектами объекта $ scope. Фактически, вы должны присоединять переменные/функции к объекту $ scope, если вы собираетесь использовать его в шаблоне (лучшая практика).
Да. В общем случае не загрязняйте $ scope функциями, которые не понадобятся в представлениях.