Jump to content

s0rr0w

User
  • Posts

    5,139
  • Joined

  • Last visited

  • Days Won

    32

Posts posted by s0rr0w

  1. Разработка HTML5 - это "катится в сторону XML"? XHTML 2 как раз пока отложили...

    Я бы не разрабатывал. Добавил бы новых пару элементов и все.

  2. Копать в сторону float.

    Контейнер <div id="content"> пуст, хотя в коде и находятся какие-то теги.

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

    Срочно читать, на что влияет overflow, а особенно как он влияет на float элементы внутри данного контейнера.

  3. Вообще-то HTML может еще потягаться с XML в плане "стандарта" веб. Весь смак HTML в предварительном визуальном форматировании и ограниченном количестве тегов (на мой взгляд хватило бы только HTML, HEAD, TITLE, LINK, SCRIPT, BODY, DIV, SPAN, A, все остальное логическое форматирование можно перенести на имена классов )

  4. я спрашиваю на форуме а не у гугла. разницу замечаете? :)

    Да, вы хотите, чтобы кто-то потратил свое время и нашел на гугле то, что вы не хотите найти.

    Умение искать информацию - позитивное качество любого адекватного программиста. :)

  5. И будут занимать память, как минимум.

    Решение можно активно использовать контролируя обработчики отдельно.

    Сколько памяти? Пару байт? К чему крохоборство? Браузер может течь в несколько раз больше из-за неправильного алгоритма самого браузера, чем из-за обработчика, который должен удаляться при удалении его таргета.

    Не придумывайте себе "проблемы". Лучше займитесь глобальными вещами, например изучайте алгоритмы или улучшайте свои.

  6. подскажите, пожалуйста, как узнать высоту/ширину видимой области документа

    (хочу сделать позиционирование модального кона на екране)

    А что говорит Гугль?

  7. Мдаааа, оскуднел ресурс на толковые советы.

    Удалять элементы рекурсивно, это надо было додуматься!

    	if ( !document.createRange ) {
    node.innerHTML = "";
    }
    else
    {
    var tmpRange = document.createRange();

    tmpRange.selectNodeContents(node);
    tmpRange.deleteContents();

    tmpRange.detach();
    }

  8. 2s0rr0w, ну зачем поднимать древнюю тему? лехче не станет и оппонентов вы ни в чем не убедите :) я тоже пишу обычно functionName = function(), тем не менее это не значит, что вы всех и каждого должны убеждать в этом :(

    Информация вспоминается не сразу. Я точно помнил, что декларация переменных в JS была не обязательной при при помощи var, но не мог вспомнить где.

    Вспомнил, решил запостить.

  9. Переменные (variables) объявляются с помощью ключевого слова var. Неявное объявление переменных - художественный вымысел неизвестного автора. Нет var - нет переменной!

    Это не вымысел неизвестного автора, это было в доках по JS до версии 1.4 http://devedge-temp.mozilla.org/library/ma...uide/ident.html

    Declaring Variables

    You can declare a variable in two ways:

    * By simply assigning it a value. For example, x = 42

    * With the keyword var. For example, var x = 42

    Со временем переработали отношение к декларации переменной.

  10. Вас вводит в заблуждение тот факт, что global object одновременно используется и как variable object? Так ведь Вас предупреждали, что он особенный, уникальный:

    Меня не вводит. При конкретной реализации, global object часто не одно и то же что и variable object.

    http://lxr.mozilla.org/seamonkey/source/js.../jsinterp.c#522

    Вы в очередной раз садитесь в лужу. Вы внимательно читали пункт, на который ссылаетесь? Если да, то почему не смогли понять? Попробую помочь Вам в очередной раз. Итак, Вы задали вопрос:

    Да, тут пропедалил немного. При декларации переменных создаются проперти с NULL'евыми значениями. (в мозилле по крайней мере это так http://lxr.mozilla.org/seamonkey/source/js...sinterp.c#4539)

  11. Вы о каких объектах речь ведете?

    К примеру, глобальном объекте.

    Разные алгоритмы - я ведь объяснял, а Вам, как о стену горох!

    Т.е., одно от другого вы отличаете сугубо по алгоритмам?

    Вот мне интересно, а чем у вас свойство отличается от переменной? Приведите общее описание, абстрагируясь от алгоритма работы интерпретатора.

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

    Так вы внимательно читайте спеки. Вы же у нас знающий, а не я.

    12.2 Variable statement

    При наличии AssignmentExpression, интерпретатор всегда проходит пункт 8.6.2.2 [[Put]] (P, V)

  12. Поскипал часть "обсуждения". Можно было бы дальше спорить, но это уже оффтопик.

    Простите, а как по-русски будет Variable declaration? Уж не объявление ли переменной?

    Так оно и есть. Только в вашем случае (zebra = function () {};) нет никакого объявления переменной.

    На остальные вопросы принципиально не отвечаете? Процесс создания именованного свойства объекта можно называть объявлением переменной?

    Почему объявление переменной - это создание свойства объекта, а создание свойства объекта - не создание переменной.

    Нет, этот алгоритм не используется.

    Используется :)

    Да я вижу, что Вы ни черта не понимаете.

    :( Спасибо, что мне напомнили.

    Знаете чем отличаются автомеханики от гонщиков? Одни знают все про машину, но эти знания не дают им шансов выиграть гонку. Вторые просто ездят, и достигают результатов.

  13. Плохо то, что Вы, плутая в трех соснах, оспариваете good practice, сформированную на лучшем, что есть в мировом опыте.

    Вам придется сильно постараться, чтобы доказать мне, что я действительно путаюсь в трех соснах. Если бы вы внимательно читали спецификацию, то у вас не было бы утверждения, что нет ни одного способа идентификации функции вида zebra = function (){}; И, тем более, вам придется серьезно постараться, чтобы доказать, что я действительно оспариваю good practice. Я всего лишь указываю на то, что нужно не слепо верить, а думать над теми вещами, которые происходят.

    В данном случае налицо грубейшие ошибки дизайна программы. Кстати, это еще один показательный пример того, как ваши пространные рассказы о вашем пресловутом опыте рушатся, как карточные домики, стоит Вам показать себя "в деле".

    Дизайн программы? Это смешно! Когда над одним кодом могут работать разные люди разной квалификации, с разным пониманием языка, то ни о каком дизайне обычно не идет речь. И прежде чем показывать на меня пальцем, советую приводить свои варианты решения. Чтобы не было голословных заявлений.

    Я тоже уже говорил, что общение с Вами - бесполезное занятие.

    Общение со мной бесполезное занятие, если мне пытаются бездоказательно что-либо рассказать. Я люблю аргументированные споры, а не надувание щек. Я просил доказательства - их нет. Есть всего лишь заявления, что я либо слеп, либо глуп.

    А выбор должен быть продиктован конкретными условиями. Я все объяснил. Как я уже писал, Вы или слепы, ли глупы. У Вас перед носом два алгоритма. Один состоит из двух пунктов, второй - из нескольких десятков. Ваш выбор в пользу второго - это еще одно свидетельство вашей безграмотности в подобных вопросах.

    Отличное утверждение! Не зная условий, в которых будет использоваться данный скрипт, как вы пришли к выводу, что нужно использовать только ОДИН вариант декларации функции, и никаких других быть не должно?

    Да не объявляется никакая переменная в глобальном контексте! Создается св-во глобального объекта, отличающееся от переменных хотя бы тем, что не имеет атрибута { DontDelete }. И вся проблема в том, как это св-во создается (уже объяснял, но Вам хоть кол на голове теши)!

    Простите, а как по-русски будет Variable declaration? Уж не объявление ли переменной?

    И является ли создание идентифицированного свойства объекта объявлением переменной?

    Откуда такие придирательства к словам, которые четко отражают суть?

    Как вы считаете, проходит ли алгоритм декларации переменной пункт 8.6.2.2 спецификации?

    Все переменные в ES ялвяются свойствами, хотя и со своими ньюансами. На что вы мне хотели открыть глаза? Я не понимаю.

  14. Еще бы написали: "Стоило один раз ошибиться!" - хоть посмеялись бы.

    Да даже и ошибиться, не вижу в этом ничего позорного.

    Поясните.

    Я думал, что пример говорит сам за себя.

    Итак, у вас есть некий cgi-модуль, который динамически формирует определенный JS в зависимости от контекста. Кусок JS кода передается модулю как параметр из других модулей. Порядок добавления кода может быть разным. Вам нужно производить инициализацию некого объекта только один раз, самым первым модулем, который был в стеке. Факт инициализации можно записывать в флаге, а можно сделать следующим образом

    Глобальная функция инициализации

    function init () {

    code...

    };

    модуль 3

    init();

    var init= function(){};

    модуль 1

    init();

    var init= function(){};

    модуль 2

    init();

    var init= function(){};

    В данном случае гарантировано будет исполнена функция инициализации всего один раз.

    Ну да, если еще приплести сюда что-нибудь, вроде "в масштабе вселенной это все мелочи", то разницы нет. Именно поэтому вашу точку зрения и вытекающие последствия Zeroglif назвал "почти что трэш из девяностых, некачественный со всех сторон, безыдейный, с конкретными ошибками, неорганизованный, просто откровенно слабый по форме и содержанию".

    Да мне лично пофиг, что кто-то не может воспринять мой код.

    Что ж, поскольку Вы этой разницы так и не признали, то я, как и обещал, щепчу себе под нос: "Горбатого могила исправит".

    Простите, но я в курсе, какая разница. Я не признаю зашоренного ограничения сознания всего одним вариантом. Никогда еще ограниченность не делала решения шедевральными.

    Я привел конкретный пример! Описание двух вариантов говорит само за себя, и каждый вменяемый человек поймет то, какой из вариантов лучше. Доказывать уже нечего.

    Как я уже и говорил, нормального и взвешенного доказательства не будет. Описание говорить может, но из него не вытекает однозначность выбора.

    Расскажите о том, какие выгоды несет ваш вариант zebra = function () {}; в данном контексте (что за ним стоит, кроме вашего упрямства).

    То, что переменная объявляется в глобальном контексте. Пример Влада, как я уже говорил, вырожден, и не может служить примером идеального решения. Код может использоваться в любом месте, с любыми начальными данными, со всевозможными отклонениями. Код не идеален сам по себе и, даже с исправлениями, решает только самые примитивные задачи.

  15. В очередной раз показываете то, что у Вас совершенно неверное представление о происходящем!

    Стоило пропустить слово референс, как тут-же слышу вопли про неверное представление. Да возвращается ссылка на значение. Но на значение созданной переменной.

    Если Вы считаете, что assignment to undeclared variable ? это фича, а не аномалия, подобная недоразумениям, вроде:

    Это фича языка. Все действия не противоречат логике работы интерпретатора.

    Если Вы уверены, что в будущем assignment (как сейчас reference) to undeclared variable, не станет illegal ? пусть будет так.

    Может и не стать.

    Если Вы не желаете обращать внимания на недвусмысленные намеки тех, кто занимается разработкой будущих версий языка...

    Кто вам сказал, что я не обращаю внимания?

    Нет ни логических, ни синтаксических, ни каких-либо других предпосылок для использования присвоения переменной значения объекта-функции, т.к. в данном случае нет ни условий, ни любых других структурных вариаций. Следовательно вывод прост ? если нужен объект-функция, то нужно просто создать этот объект, используя простой и понятный синтаксис FunctionDeclaration (о нем ? ниже).

    Не надо пытаться привести обоснование действий на основе вырожденных вариантов применения скрипта. Если смотреть глобальнее, то не всегда FunctionDeclaration приносит позитив.

    Например

    function x () { alert("Do something once"); };
    x();

    function x () { alert("Stop") };
    x ();

    в обоих случаях будет два алерта "Stop";

    А вот в этом случае

    function x () { alert("Do something once"); };
    x();

    var x = function() { alert("Stop") };
    x ();

    Будет выведено два разных алерта. Надо ли пояснять практический смысл данного примера?

    Если после подобного сравнения Вы будете по прежнему настаивать, что "Нет особой разницы. Оба варианта нормальные", то я уже ничего не смогу добавить. Я лишь тихо прошепчу себе под нос: "Горбатого могила исправит".

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

    Примеры расчитаны на то, чтобы убавить желание использовать необъявленные переменные.

    Практическое применение вашего чудо-кода есть? Или это только вырожденные варианты, которые встречаются в реальных кодах в одном случае из миллиона?

  16. А теперь сделайте вывод - это все же bug, под который подогнали документацию, или что-то еще? Будет ли это исправлено в будущем, или в спецификации появится специальный раздел "Аssignment to undeclared variable"?

    Это не баг, это фича языка. Все переменные являются объектами, результат, который возвращает парсер, должен быть объектом. Чтобы вернуть объект, надо его создать.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy