Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 20.12.2011, 01:17
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

Сообщение от melky Посмотреть сообщение
нет.

variable_local берётся из сохранённой области видимости корневой функции (самая первая - т.е. анонимная оборачивалка).

т.к. возможно я изрекаюсь слишком заумно, поэтому я кидаю картинку.



PS как мне нравится эта картинка троллфейса.
точно) я прост невнимательно посмотрел.
Ответить с цитированием
  #32 (permalink)  
Старый 20.12.2011, 01:18
Аватар для Livanderiaamarum
Профессор
Отправить личное сообщение для Livanderiaamarum Посмотреть профиль Найти все сообщения от Livanderiaamarum
 
Регистрация: 10.12.2011
Сообщений: 290

Сообщение от melky Посмотреть сообщение
PS как мне нравится эта картинка троллфейса.
а у меня батхерд с неё((
Ответить с цитированием
  #33 (permalink)  
Старый 20.12.2011, 11:42
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Сообщение от trikadin
С одной разницей, ф-ция - анонимна, у неё нет имени, а значит, она не засоряет глобальную область видимости.
(function a(){
alert(1);
})();
a();

Так тоже монжо Особенно в strict mode так даже правильнее
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #34 (permalink)  
Старый 20.12.2011, 12:22
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Nekromancer
Так тоже монжо Особенно в strict mode так даже правильнее
Да я не против)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #35 (permalink)  
Старый 20.12.2011, 12:50
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

trikadin,
Ну ты сказал, что она анонимная потому, что у неё нет имени и она потому не засоряет глобальную область.
Она действительно анонимная потому, что имени нету, но не засоряет не потому
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #36 (permalink)  
Старый 20.12.2011, 13:17
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

Некромансер., Соглано ecmascript 5.1 идентификатор функции как выражения создается в Lexical enviroment (созданном как часть контекста исполнения выражения (не кода) функции) и по идее не должен быть виден из вне, но твой пример мне не понятен, почему видна "a"!!!! Кстати согласно все то же спецификации
var s=function a(){}

уже замыкание.
Люди, я сам плохо понимаю логику языка, но чтобы пролить свет на нее нужно!!! читать спецификацию, частными примерами очень тяжело понять, что почему происходит.

Последний раз редактировалось Иваннн, 20.12.2011 в 13:33.
Ответить с цитированием
  #37 (permalink)  
Старый 20.12.2011, 13:37
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

"a" как раз таки не видна - "error: a is not defined". "a" видна только внутри функции "a", что позволяет использовать её ещё раз внутри вызова - рекурсия. Вместо arguments.callee.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #38 (permalink)  
Старый 20.12.2011, 13:40
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

Все понял, я упустил, что функция в скобках и первый алерт - ее.
Ответить с цитированием
  #39 (permalink)  
Старый 20.12.2011, 13:43
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Иваннн
но твой пример мне не понятен, почему видна "a"
Я бы лучше спросил, почему она не видна) Результаты вызовов: FF8/Opera10.62 - 1; "error: a is not defined"; IE8 - 1; 1.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 20.12.2011 в 13:46.
Ответить с цитированием
  #40 (permalink)  
Старый 20.12.2011, 13:47
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

nerv_,
http://dmitrysoshnikov.com/ecmascrip...expression-nfe
Внизу написано про баги реализации от Microsoft.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
wtf javascript vflash Оффтопик 53 14.11.2011 01:44
Что означает такой вызов? ksa jQuery 0 21.12.2010 13:45
DST что это? zzz Общие вопросы Javascript 3 11.08.2009 19:38
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39
Что означает конструкция ? ivanmara Общие вопросы Javascript 55 07.01.2009 02:54