Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   хитросплетения Global,контекст,this,Reference (https://javascript.ru/forum/misc/3158-khitrospleteniya-global-kontekst-reference.html)

Dmitry A. Soshnikov 18.04.2009 18:40

Цитата:

Сообщение от kefi
так если не слепые, то зачем себя вести, как слепые ?

Вы тон смените, пожалуйста, а то я воздержусь от объяснений и рассказов ;) Повторю, всё дело в вопросе (в качестве вопроса). Ну, если разобрались, значит хорошо.

Цитата:

Сообщение от kefi
Установить Замыкание -
значит использовать Имя Замыкаемой функции или ссылку на нее
в выражении (возможно опосредованно через его вычисление).

Слово "установить" здесь - что есть, что нет. Замыкание - это:

1. либо все функции (в виду единого механизма Scope chain);
2. либо, когда функция: (а) имеет свободные переменные, (б) переживает свой контекст.

Всё. Вот эти все "Защитник", "Установить" и т.д. - только больше Вас самого путают.

kefi 18.04.2009 19:36

Цитата:

Вы тон смените, пожалуйста,
Ну как обычно - непонимание порождает агрессию, хотя оно всего лишь непонимание не более того. Не подумайте, что я Вам неблагодарен за Ваше участие, напротив(хорошо видно?). Но я думаю, что :
1) Вам нужно, быть более внимательным к тому, с кем Вы беседуете, чтобы реагировать адекватно .
2) Не надо делать вид, что Вы оказываете одолжение тому, с кем беседуете. Я исхожу из того, что Вам это интересно, иначе бы Вы не отвечали, хотя Вы уже прежде пытались дать понять, что оказываете одолжение .
Короче, менять Вам самому тон или нет - решайте сами. Я со своей стороны просто могу ГАРАНТИРОВАТЬ, что я никогда не провоцирую и не собираюсь провоцировать личностные оценки , как бы Вам это НЕ КАЗАЛОСЬ.

больше самого меня путают. ничего не объясняющие, в отличие от моего объяснения, слова :
Цитата:

либо все функции (в виду единого механизма Scope chain);
Я , конечно, остаюсь новичком, но пока я не встречусь с противным, буду полагать, что говорить о функциях , как о замыканиях бессмысленно, т.к. они НЕ вызывают тех проблем ,что я описал в своих предыдущих постах.
А что касается п2. в определении замыкания , то оно просто неверно :
По нему функция A в след примере будет замыканием:
var g=1 ; function A() { alert(g) }; // Какие проблемы замыкания Вы можете описать в этой программе? Их нет, как и нет замыкания.

Zeroglif 18.04.2009 20:20

Цитата:

Сообщение от kefi
и не собираюсь провоцировать личностные оценки

Личностная оценка неизбежна. Это происходит само собой, в процессе профессионального обсуждения предмета ообычно сразу становится ясен уровень владения этим предметом. К примеру, я бы охарактеризовал kefi, как "энергичного ньюба", от "вялого ньюба" он отличается более высоким уровнем интереса и активностью в дискуссии, которую готов поддерживать. Это можно только приветствовать, пока "энергичный ньюб" не превращается в "отрицающего всё на свете ньюба" - стандарт ему ничего не объясняет, на вопросы его никто не отвечает или отвечают не то, и вообще, не надо было на них отвечать, т.к. он и так всё знает и даже объясняет...

Цитата:

Сообщение от kefi
Их нет, как и нет замыкания.

Преждевременный вывод. Вам нужно вернуться назад и всё-таки разобраться с контекстами и scope chain, после того, как вы поймёте то, как это происходит в javascript, вопрос о замыканиях отпадёт сам собой. ;)

kefi 18.04.2009 20:32

Цитата:

Сообщение от Zeroglif
я бы охарактеризовал kefi

Спасибо за классификацию меня как объекта, субъекта, особь ... , которая осмеливается что-то там объяснять доступное только вам посвященным .
Но прежде , чем выносить суждение о
Цитата:

Преждевременности выводов
неплохо бы было понять аргументы , ах ну да, Вы ж не опуститесь на уровень понимания особи.

Dmitry A. Soshnikov 18.04.2009 20:39

Цитата:

Сообщение от kefi
1) Вам нужно, быть более внимательным к тому, с кем Вы беседуете, чтобы реагировать адекватно .

Спасибо, учту.

Цитата:

Сообщение от kefi
Я исхожу из того, что Вам это интересно, иначе бы Вы не отвечали

"Интересный", всё-таки, подход. "Логично-прагматичное потребление".

Если Вы под "Вам это интересно" подразумеваете "полезную информацию в мою сторону" - так я и так знаю эту информацию, поэтому с этой точки зрения, если отстраниться, мне беседа может быть абсолютно неинтересной.

А вот, если мы возьмём просто беседу, либо беседу в плане помощи тому, кто хочет понять и просит поделиться информацией тех, кто знает - это всегда пожалуйста, всегда интересно. Но, пожалуйста, только без фраз, несущих смысл a-ля "давайте-ка, быстро объясните мне и удовлетворите меня ответами, и нечего себя тут как слепые вести, я поставил вам вопросы, решайте их, вы же только этим занимаетесь и не тратите своё время, когда я одно и то же, выдуманное мной, спрашиваю. Это же так? Конечно так, иначе бы вы не отвечали!". Если я ошибся и мне это, действительно, показалось, мы, конечно, продолжим.

Но, довольно демагогии, надеюсь, мы поняли друг друга :)

А теперь, вернёмся к JS.

Цитата:

Сообщение от kefi
но пока я не встречусь с противным, буду полагать, что говорить о функциях , как о замыканиях бессмысленно

Абсолютно ваше право не принимать/не видеть реальное положение дел. Но есть ли в этом толк - вопрос спорный. ;) Описание этого положения (как одну из теорий о замыканиях в JS) можно найти в ссылке выше.

Цитата:

Сообщение от kefi
А что касается п2. в определении замыкания , то оно просто неверно :

Туда же.

Цитата:

Сообщение от Dmitry A. Soshnikov
Какие проблемы замыкания Вы можете описать в этой программе? Их нет, как и нет замыкания.

А функция становится замыканием, когда у неё появляются какие-то проблемы?

P.S.: да, и...

- никогда не делаю вид, что оказываю одолжение при беседе, поэтому, кажется - Вам;
- не беседую, если вижу потребительский подход.

update:

Цитата:

Сообщение от kefi
доступное только вам посвященным .

Цитата:

Сообщение от kefi
ах ну да, Вы ж не опуститесь на уровень понимания особи

Слушайте, хватит демагогии. Отстранитесь от этого и сконцентрируйтесь на предмете. Никто из беседующих (включая Вас, я надеюсь) так не думает.

Zeroglif 18.04.2009 20:51

Цитата:

Сообщение от kefi
спасибо за классификацию

Пожалуйста, так поступает любой. Иначе людям было бы тяжело находить точки соприкосновения и дискуссия была бы роботизирована ака "без эмоциональной окраски".

Цитата:

Сообщение от kefi
которая осмеливается что-то там объяснять

Глупости, все никнеймы равны.

Цитата:

Сообщение от kefi
неплохо бы было понять аргументы

Поднимите тему про замыкания здесь, на хабре, погуглите "zeroglif замыкание", это много обсуждалось на винграде. Там и аргументы, и контрррррр...

Цитата:

Сообщение от kefi
Вы ж не опуститесь

Вы периодически на форуме почемучкаете, а я готов в ответ потомучкать, мне и интересно, и полезно, пока я вижу взаимопонимание. Если же вы упёрлись в "поиск универсального примера, который всё объясняет" и в упор не видите аргументов, не способны переварить стандарт, то это "глухой со слепым"... оно нам нужно?

kefi 18.04.2009 22:08

Цитата:

Сообщение от Dmitry A. Soshnikov
Замыкание - это:
1. либо все функции (в виду единого механизма Scope chain);
2. либо, когда функция: (а) имеет свободные переменные, (б) переживает свой контекст.

Как Вы понимаете смысл термина Замыкание и как он связан с русским словом 'Замыкание' ?
В чем проявляется Замыкание для любой функции из п.1 и для любой из п.2 ? Например, из этой программы : var g=1 ; function A() { alert(g) };
PS. Замечу, что называть ВСЕ функции Замыканиями логически означает уничтожение этого термина, т.к. становится достаточном говорить просто о Функциях, ну или, наоборот, становится ненужным термин Функция.

Dmitry A. Soshnikov 18.04.2009 23:18

Цитата:

Сообщение от kefi
с русским словом 'Замыкание' ?

http://ru.wikipedia.org/wiki/Замыкание

Цитата:

Сообщение от kefi
В чем проявляется Замыкание

Ещё раз - http://javascript.ru/forum/misc/2975...html#post13713 - там достаточно полно описано. Вы сказали, что там непонятно. Что именно не понятно?

Ещё: http://www.jibbering.com/faq/faq_notes/closures.html

Цитата:

Сообщение от kefi
PS. Замечу, что называть ВСЕ функции Замыканиями логически означает уничтожение этого термина, т.к. становится достаточном говорить просто о Функциях, ну или, наоборот, становится ненужным термин Функция.

Касательно классификации и терминологии - естественно. Однако, мы говорим о конкретной технологии (JavaScript) и об одной из теорий, связанной с замыканиями в JS. Конечно же, теория рассматривается в неком аспекте, в неком ключе. За этот аспект принимается механизм Scope chain'a и разрешения имён свойств/переменных. В этом ключе, обращение к свободной переменной одинаково на любых видах функций.

Zeroglif 18.04.2009 23:35

http://forum.vingrad.ru/topic-122262...all/index.html
http://forum.vingrad.ru/index.php?sh...dpost&p=926930

kefi 18.04.2009 23:47

2 Dmitry A. Soshnikov > Вообще вопросы были заданы конкретно Вам, Вы же отсылаете к ссылкам, которые я давно уже читал, кроме jibbering.com, в которой при беглом просмотре я обнаружил гораздо больше моего понимания , чем Вашего относительно того, что :

Замыкание - это:
1. либо все функции (в виду единого механизма Scope chain);
2. либо, когда функция: (а) имеет свободные переменные, (б) переживает свой контекст.
:
A closure is formed by returning a function object that was created within an execution context of a function call from that function call and assigning a reference to that inner function to a property of another object. Or by directly assigning a reference to such a function object to, for example, a global variable, a property of a globally accessible object or an object passed by reference as an argument to the outer function call. e.g:-
function exampleClosureForm(arg1, arg2){
var localVar = 8;
function exampleReturned(innerArg){
return ((arg1 + arg2)/(innerArg + localVar));
}
/* return a reference to the inner function defined as -
exampleReturned -:-
*/
return exampleReturned;
}

var globalVar = exampleClosureForm(2, 4);

ну бог с ним со всем пока ...


Часовой пояс GMT +3, время: 20:26.