точно) я прост невнимательно посмотрел.
|
Цитата:
|
Цитата:
(function a(){ alert(1); })(); a(); Так тоже монжо :) Особенно в strict mode так даже правильнее :) |
Цитата:
|
trikadin,
Ну ты сказал, что она анонимная потому, что у неё нет имени и она потому не засоряет глобальную область. Она действительно анонимная потому, что имени нету, но не засоряет не потому :) |
Некромансер., Соглано ecmascript 5.1 идентификатор функции как выражения создается в Lexical enviroment (созданном как часть контекста исполнения выражения (не кода) функции) и по идее не должен быть виден из вне, но твой пример мне не понятен, почему видна "a"!!!! Кстати согласно все то же спецификации
var s=function a(){} уже замыкание. Люди, я сам плохо понимаю логику языка, но чтобы пролить свет на нее нужно!!! читать спецификацию, частными примерами очень тяжело понять, что почему происходит. |
"a" как раз таки не видна - "error: a is not defined". "a" видна только внутри функции "a", что позволяет использовать её ещё раз внутри вызова - рекурсия. Вместо arguments.callee.
|
Все понял, я упустил, что функция в скобках и первый алерт - ее.
|
Цитата:
|
nerv_,
http://dmitrysoshnikov.com/ecmascrip...expression-nfe Внизу написано про баги реализации от Microsoft. |
Часовой пояс GMT +3, время: 08:11. |