|
1 / 1 / 2
Регистрация: 20.10.2011
Сообщений: 154
|
|||||||||||
Видимость функции24.11.2014, 12:37. Показов 2055. Ответов 5
Метки нет (Все метки)
Товарищи, такая проблема. Только начал осваивать JS, раньше писал на C#. Начал с основ и немного просел на главе про функции.
Собственно, есть такой код:
Заранее благодарен Добавлено через 1 час 31 минуту С кодом выше, вроде, с горем пополам разобрался. Но вот эта штука для меня совершенно непонятная:
0
|
|||||||||||
| 24.11.2014, 12:37 | |
|
Ответы с готовыми решениями:
5
Видимость функции
|
|
не Администратор ^_^
|
|||||||||||
| 24.11.2014, 13:44 | |||||||||||
Сообщение было отмечено Fresh_MaN как решение
Решение
Fresh_MaN,
ну раз с первым разобрался по поводу второго, постараюсь коротко и максимально понятно Хотя я вижу, что задачу взял отсюда http://learn.javascript.ru/closures-usage , и судя по всему не внимательно читал учебник, раз не понял. Но все равно распишу, ибо сейчас надо отвлечься от работы. js - это объекты. Весь js состоит из объектов, и кроме объектов в js ничего нету! запомни! Если ты что-то создаешь глобально, это присваивается объекту window, если в функции - то переменная принадлежит объекту функции
window.a (или просто a) результат будет 3. Но в функции дела обстоят иначе. Когда мы обращаемся к переменной а, то сначала проверяется существование переменной в объекте функции, и там а=='hello', переменной b не существует, тогда мы смотрим на уровень выше (это window), и там переменная существует, она равна 5 Поэтому a == 'hello', b==5; В функции мы можем обратиться напрямую к глобальному объекту window.a, он будет равен 3 Если в функции убрать var, тогда глобальная переменная a будет перезаписана. Это называется область видимости переменных, работа с замыканиями. Надеюсь ты понял что buffer в функции и buffer в window - это разные переменные. В твоем примере, ты присвоил в глобальную переменную buffer результат функции makeBuffer - объект (функция тоже объект). Функция makeBuffer исполнилась, создалась локальная видимость (замыкание). Поэтому window.buffer стал функцией, которая имеет доступ к замыканию makeBuffer, и никто больше не имеет туда доступа; Другой пример:
1
|
|||||||||||
|
414 / 379 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
|
|||||||
| 24.11.2014, 13:57 | |||||||
|
Fresh_MaN,
это разные области видимости а область видимости в js определяется только ф-цией
1
|
|||||||
|
1 / 1 / 2
Регистрация: 20.10.2011
Сообщений: 154
|
|
| 24.11.2014, 14:37 [ТС] | |
|
Спасибо! Почти все встало на свои места. Только один вопрос остался:
строчка с buffer.clear в window... Почему мы обращаемся к этой функции не buffer.buffer.clear()?
0
|
|
|
не Администратор ^_^
|
|||||||||||
| 24.11.2014, 16:53 | |||||||||||
|
Fresh_MaN,
Во втором случае мы возвращаем объект {a:2, b:3} а значит мы можем обратиться к b.a==2 и b.b==3 Так же, как я писал выше, не следует забывать, что функция тоже объект а значит мы можем присвоить свойства
a.a == 1 a.b() - результат функции 2. Если обратимся к b(), то нам выведет результат функции b.a и b.b аналогично первому варианту
1
|
|||||||||||
|
1 / 1 / 2
Регистрация: 20.10.2011
Сообщений: 154
|
|
| 25.11.2014, 06:08 [ТС] | |
|
Спасибо. Теперь все точно стало понятно!
0
|
|
| 25.11.2014, 06:08 | |
|
Помогаю со студенческими работами здесь
6
Видимость переменных видимость картинки Ajax. Видимость XMLHttpRequest. Видимость картинок на сайте
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|