Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Смишных картинок тред (https://javascript.ru/forum/offtopic/35821-smishnykh-kartinok-tred.html)

nerv_ 28.11.2013 21:44

Цитата:

Сообщение от Gozar
Что еще за значение блока? расскажи поподробней, может я чего не знаю и у блоков есть значения?

да он укурен по самые помидоры )

DjDiablo 28.11.2013 22:11

Цитата:

Сообщение от nerv_ (Сообщение 283383)
да он укурен по самые помидоры )

Ты что то имеешь против помидоров ? :lol:

monolithed 28.11.2013 22:35

Цитата:

Сообщение от Maxmaxmaximus3
да, блоки возвращают результат последнего выражения.
в будущих версиях экмы

Пример в студию тебя не понимают.

let fn = () => {
    1
}


Проверить можно уже в FF и Traceur, что 1 не вернется, а return {1} приведет к ошибке.

cyber 28.11.2013 22:40

Оставлю это тут может кому пригодиться.
https://github.com/cyberua/gallery_course_work/
https://drive.google.com/folderview?...&usp=sha ring

Maxmaxmaximus3 28.11.2013 23:13

Цитата:

Сообщение от monolithed
Пример в студию тебя не понимают.

какое слово те не понятно в предложении "блок возвращает результат последнего выражения в нем" ?

не забываем что тут 1-3 человека включая меня которые знают как устроен яваскрипт, остальные нубы нубами. так что не удивительно что вы не понимаете о чем я.

var block = eval('{1+2; 3+5;}')
alert(block)



Цитата:

Сообщение от monolithed
return {1} приведет к ошибке.



ВОЗМОЖНО ПО ЭТОМУ я поднял вопрос как синтаксически грамотно вывести блок не используя ивал, использовать ухищрения парсера яваскрипта чтобы заставить его вернуть значение блока????


п.с. к слову arr.1 тоже ошибка будет, но это не значит что там нет ключа 1, это значит что парсер не может распознять такую конструкцию, то же и с блоками, return ожидает немного другое.

Цитата:

Сообщение от kobezzza
Заменяет строки, комменты и регулярные выражения на __ESCAPER_QUOT__номер_ , чтобы удобней было парсить, а потом сделать обратную замену.

либа использовать не буду но идея годная, а я че то все дерево строил потом обратно разворачивал в код, короче по правильно, но я понял что тут это лишнее =)

monolithed 28.11.2013 23:29

Цитата:

Сообщение от Maxmaxmaximus3
не забываем что тут 1-3 человека включая меня которые знают как устроен яваскрипт, остальные нубы нубами. так что не удивительно что вы не понимаете о чем я.

var block = eval('{1+2; 3+5;}')
alert(block)

Какое отношение этот школьный пример имеет к твоему вопросу?

function name(){

  {
    2+3;
    5+1;
  }

}


Цитата:

Сообщение от Maxmaxmaximus3
в будущих версиях экмы, и функции так будут делать

Как так, кроме тебя еще кто-нибудь об этом знает?

Maxmaxmaximus3 28.11.2013 23:34

Цитата:

Сообщение от monolithed
Какое отношение этот пример имеет к твоему вопросу?

тут я показываю тебе предложение "блок возвращает последнее выражение" как ты и просил показать.

monolithed 28.11.2013 23:41

Цитата:

Сообщение от Maxmaxmaximus3
ВОЗМОЖНО ПО ЭТОМУ я поднял вопрос как синтаксически грамотно вывести блок не используя ивал, использовать ухищрения парсера яваскрипта чтобы заставить его вернуть значение блока????

тут я показываю тебе предложение "блок возвращает последнее выражение" как ты и просил показать.


{
  var a = 1;
}

alert(a); // 1


В ES6 добавится блочная область видимости:


{
   let a = 1;
}

alert(a); // ReferenceError

Maxmaxmaximus3 29.11.2013 00:06

monolithed, так, давай другой пример,

function (){
2+2;
4+3;
}


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

иными словами я из

function (){
2+2;
4+3;
}


хочу сделать

function () {
return {
2+2;
4+3;
}

}

Почему не ивал? Потому что я хочу составить такой код функции который бы реализовывал такое поведение, и я бы создал из него новую функцию new Function('code'); и она работала бы с нативной скоростью.


И это решение просто красивое, разумеется если нет способа, то придется парсить код функции и искать последнее выражение и перед ним рисовать return.

monolithed 29.11.2013 00:14

Цитата:

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

К чему весь это бред?

Используй Perl

Цитата:

Сообщение от Maxmaxmaximus3
блок возвращает результат последнего выражения в нем

А может и не возвращать:
foo: {
    var a = 0;

    break foo;

    var a = 1;
}

alert(a) //0


:)

monolithed 29.11.2013 00:22

Цитата:

Сообщение от Maxmaxmaximus3
не забываем что тут 1-3 человека включая меня которые знают как устроен яваскрипт, остальные нубы нубами.

Я смотрю ты любишь загадки, развлекайся:
alert(/\\{0}/.test(true)); // true

l-liava-l 29.11.2013 00:58

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

Цитата:

и она работала бы с нативной скоростью.
С js парсером поравнятся удумал? :haha:
либо я тебя не понял

Цитата:

alert(/\\{0}/.test(true)); // true
хе, прикольно)
регулярка которая не ищет ничего, возвращает тру всегда потому что не только не нашла, но и не пытлась
верно не?)

cyber 29.11.2013 01:30

Цитата:

Сообщение от l-liava-l
регулярка которая не ищет ничего, возвращает тру всегда потому что не только не нашла, но и не пытлась
верно не?)

а почему тогда если поменять выражение то будет false?
/s/.test(false)// true
/d/.test(false)// false
/a/.test(false)// true

wtf? чет я немного не вкурю)

l-liava-l 29.11.2013 01:34

Цитата:

wtf? чет я немного не вкурю)
.test() ищет совпадения регулярки в строке, переводит буливые величины в строки.
в первом случае нашел s дал тру
во втором не нашел d дал фалс
потом нашел a дал тру

что касается alert(/\\{0}/.test(true)); // true
то тут все загвоздка в {0}
{n} n ое совпадение если не ошибаюсь и принимает только целое число и если скормить 0 то ниче искать не будет
а \\ он написал чтобы запутать)
если перевести регулярку на человеческий язык то будет

эй парсер! видишь \? вот его не ищи, даже не пытайся, если не найдешь то давай тру)


cyber,
ты вообще спишь? всю ночь же писал курсовую)))

cyber 29.11.2013 01:50

Цитата:

Сообщение от l-liava-l
ты вообще спишь? всю ночь же писал курсовую)))

да сплю,поспал 2 часа ночью и 2-3 днем)
пишу 2ю курсовую в понедельник защита)

cyber 29.11.2013 01:54

Цитата:

Сообщение от l-liava-l
переводит буливые величины в строки.

эм, по какому принципу ? что можно почитать или что гуглить?
почему s == true а d == false
Цитата:

Сообщение от l-liava-l
то тут все загвоздка в {0}

вкурил, забыл что {n} - это квантор, не часто приходиться регулярки писать.

l-liava-l 29.11.2013 01:59

Цитата:

эм, по какому принципу ? что можно почитать или что гуглить?
почему s == true а d == false
.test(str) передаем ему число или булевую величину и тд, он переводит в строку.
он ищет соответсвие регулярке в строке

тоесть
/s/.test(false)
переводит false в строку, потом смотрит есть ли там буква s, она нашлась, выдало тру

но буквы d там нету поэтому фолс

cyber 29.11.2013 02:02

l-liava-l, уже туплю, 3е суток за курсовыми на человека влияют плохо)

monolithed 29.11.2013 02:11

Цитата:

Сообщение от l-liava-l
а \\ он написал чтобы запутать)

Нет не для этого.
Вообще вопрос был к максимусу, он же тут хвастался что все знает.

Maxmaxmaximus3 29.11.2013 02:20

alert(/(ololo){0}/.test(true+true))


все уже сказали до меня, строка true ИМЕЕТ нуливое количество подряд идущих обратных слешей, по этому true

алсо строка 4353535435 имеет внутри себя пустые строки

alert( new RegExp('').test(4353535435) )


Цитата:

Сообщение от monolithed
А может и не возвращать:

нет не может, ты вообще не возвращаешь то что вернул блок, шутка не удалась =)

Цитата:

Сообщение от l-liava-l
С js парсером поравнятся удумал?

В смысле? я превращаю функцию в строку, делаю изменения кода, потом обратно собираю в функцию. суть в том как использовать особенность блока возвращать последнее выражение на функции.

Цитата:

Сообщение от monolithed
Нет не для этого.

нет для этого))))))))

monolithed 29.11.2013 02:23

Цитата:

Сообщение от Maxmaxmaximus3
все уже сказали до меня, строка true ИМЕЕТ нуливое количество подряд идущих обратных слешей, по этому true

Близко, но не верно, а так:

alert(/()/.test(true))

Maxmaxmaximus3 29.11.2013 02:30

Цитата:

Сообщение от monolithed
Близко, но не верно

нет верно =)

Цитата:

Сообщение от monolithed
а так:

строка true содержит пустую строку


все, успокойся, этим меня не пронять)

monolithed 29.11.2013 02:31

Цитата:

Сообщение от Maxmaxmaximus3
строка true содержит пустую строку

С чего это?
Даю подсказку в противоположность твоему суждению — метод test внутри вызвает exec и сравнение происходит на null

alert(/./.test())

Почему?

Это же просто ;)

Ладно, я спать пойду, а то устал ждать пока gcc49 скомпилится

Maxmaxmaximus3 29.11.2013 02:52

а я уже по ходу не усну.... :)

l-liava-l 29.11.2013 14:12

alert(/./.test())

ай, врубился, хитрая штука этот test(), но не сложно)

Maxmaxmaximus3 29.11.2013 14:51

да я тоже врубился я правильный ответ сказал он просто толстит)

короче так, даже если такое поведение реализуется какими-то внутренними механизмами, КАКИМИ ИМЕННО - не важно, важно то что такое поведение объясняется логикой которую я описал =)

kobezzza 29.11.2013 15:05

Maxmaxmaximus3, могу тебе сразу сказать проблему с которой ты столкнёшься при использовании кодогенерации: если внутри функции, которая была сгенерина, произойдёт ошибка, то отладчик будет говорить (а в некоторых случаях и не будет) весьма и весьма смутные вещи, так что режим "отладки" закладывай сразу.

Или в современных браузерах можно делать такой трюк: сгенериные тексты новых функций сейвить в файл АПИ, а потом подключать через new script, тогда будет ок.

Maxmaxmaximus3 29.11.2013 16:35

Цитата:

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

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

Цитата:

Сообщение от kobezzza
Или в современных браузерах можно делать такой трюк: сгенериные тексты новых функций сейвить в файл АПИ, а потом подключать через new script, тогда будет ок.

спасибо, это ты же в яндексе работаешь уж?

kobezzza 29.11.2013 16:38

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 283552)
спасибо, это ты же в яндексе работаешь уж?

Я уже год как работаю на себе, свой проект-робот пилю:) Ну а ваще работал, пилил Яндекс.Метрику

Maxmaxmaximus3 29.11.2013 16:43

А зачем ты сидишь на этом форуме?

с.п. И только щас я осознал что мы говорим слово "пилю" только после Славика)

kobezzza 29.11.2013 16:44

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 283556)
А зачем ты сидишь на этом форуме?

Сам не знаю, привычка, но в среднем 1.5 часа я тут просираю чистого времени, надо бы забросить, но пока никак:)

Tim 29.11.2013 16:50

Цитата:

Сообщение от kobezzza
Сам не знаю, привычка, но в среднем 1.5 часа я тут просираю чистого времени, надо бы забросить, но пока никак

Мне таки почти удалось. Сейчас захожу только максимусу в карму срать, даже не читая что он там несёт.

Maxmaxmaximus3 29.11.2013 16:54

ахахах, шо у тя так бомбит? шо я те сделал)?

Shaci 29.11.2013 17:07

Цитата:

Сообщение от Tim
Мне таки почти удалось. Сейчас захожу только максимусу в карму срать, даже не читая что он там несёт.

и я), только максимус нас держит на форуме, спасибо ему

cyber 29.11.2013 17:29

Shaci, он хоть и тролль но бывают и у него бывают моменты прозрения, а насрать ему в карму это уже традиция)

Maxmaxmaximus3 29.11.2013 17:39


Shaci 29.11.2013 18:12

Цитата:

Сообщение от cyber
Shaci, он хоть и тролль но бывают и у него бывают моменты прозрения,

если бы он темы про педофилию не разводил еще)), а то совсем толстый тролль получается

cyber 29.11.2013 18:30

Shaci, и всякие идиотские картинки не вставлял бы..

Maxmaxmaximus3 29.11.2013 18:56

Педофилия для вас больная тема потому что вас общество приучила к этому. Вы БОИТЕСЬ задавать вопросы. БОИТЕСЬ сомневаться и БОИТЕСЬ думать. Про педофилию я не троллил. Но бомбило у вас от правды. Вы как люди которых приучили что земля плоская и всех кто говорит что она круглая вы считаете сумасшедшими и сжигаете. Вы даже боитесь спросить их "А почему земля круглая?", "Какие у тебя есть доказательства?". Нет! Вы просто набрасываетесь как стадо на все новое и необычное и не то как то к чему вас приучили. То есть САМ ФАКТ ТОГО ЧТО ДЛЯ ВАС ЭТО БОЛЬНАЯ ТЕМА уже да о чем-то говорит.

Мне больше нечего сказать, кто захочет узнать почему педофилия это не плохо пишите вконтакте https://vk.com/max_max_maximus

cyber 29.11.2013 19:10

Вот щас мне хочется дать ему по е**лу.


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