Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос про вложенные функции в JavaScript / 10 сообщений из 10, страница 1 из 1
26.11.2012, 12:49
    #38053041
Игорь1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
Добрый день.

Заметил тут на одной странице такую, не очень понятную конструкцию:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    function SetTrClick(tbl) {
        if (!tbl) { return; }
        for (var i = tbl.rows.length - 1; i >= 0; i--) {
            tbl.rows[i].onclick = TrClick;
        }
        function TrClick() {
            for (var i = 0; i < tbl.rows.length; i++) {
                tbl.rows[i].className = '';
            }
            this.className = this.className == 'CSelectedRow' ? '' : 'CSelectedRow';
        }
    }



Это что получается? Вложенная функция TrClick внутри другой функции SetTrClick?
Такое допустимо с точки зрения синтаксиса? Или это ошбка программиста сайта?
С виду все, вроде бы, работает.

Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
26.11.2012, 12:53
    #38053050
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
...
Рейтинг: 0 / 0
26.11.2012, 12:54
    #38053053
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
Все нормально.
...
Рейтинг: 0 / 0
26.11.2012, 12:57
    #38053064
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
Игорь1973,

да, допустимо. Данный прием имеет множество применений: инкапсуляция логики, модульность, замыкания и т.п.
...
Рейтинг: 0 / 0
26.11.2012, 13:40
    #38053161
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
Иногда даже до абсурда доходит и код может выглядеть примерно так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function f1(){
    ...
    $.ajax({success:function(result){
        $(result.m).each(function(_, m){
            $(m).animate({...}, "slow", function(){
                $.ajax({success:function(){
                    ...//и так далее
                }});
            });
        });
    }});
}
...
Рейтинг: 0 / 0
26.11.2012, 20:38
    #38053927
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
Игорь1973,

И правда - всё нормально.

Например, вызов:
SetTrClick(tbl).TrClick();
Другое дело, нафига это нужно? Даже и не придумать зачем. :)
...
Рейтинг: 0 / 0
26.11.2012, 20:41
    #38053935
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
ShSergeНапример, вызов:
SetTrClick(tbl).TrClick();ну вот причем здесь это?
...
Рейтинг: 0 / 0
26.11.2012, 20:47
    #38053942
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
Яростный МечShSergeНапример, вызов:
SetTrClick(tbl).TrClick();ну вот причем здесь это?
Первое - объект (может быть), а второе - свойство объекта (тоже может быть).
ЯМ, а чё ты хотел спросить? Проверь на коде топикстартера.
...
Рейтинг: 0 / 0
26.11.2012, 23:46
    #38054065
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
TypeError: SetTrClick(tbl) is undefined
http://jsfiddle.net/MrTnV/
...
Рейтинг: 0 / 0
27.11.2012, 14:27
    #38054833
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про вложенные функции в JavaScript
ПаганельTypeError: SetTrClick(tbl) is undefined
http://jsfiddle.net/MrTnV/
а могло быть иначе? что бы получить экземпляр (ну то есть объект) надо его создавать (конструкцией new). А в данном случае вызывается функция, которая НИЧЕГО не возвращает, и у этого "ничего" вызывается метод...
а вот самое интересное... кто сказал что TrClick будет паблик свойством (писал какраз код, увидел топик и начал все конструкции function истерически менять на var ... = function, а потом вдруг решил проверить). Так вот... function ... () - это определение приватной функции, которая не видна извне...
http://jsfiddle.net/MrTnV/1/
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос про вложенные функции в JavaScript / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]