Регистрация  |  Вход

Коварство Javascript

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

Вот маленький скриншот функционала на js, всего в 1 страницу

Посмотрите на код пока без блоков которые я выделил. Вы чего-нибудь подозрительное наблюдаете?
С виду абсолютно нормальная программа.

А вот и нет! это три (пронумерованы) независимых куска программы, которые выполняются в разных изолированных контекстах и никак друг с другом не связанные. Нет доступа к переменным на уровень выше, нет возможности вернуть значение. Хорошо я это знаю потому что целый день убил чтобы вкурить и написать это, а что делать программисту который пришел и хочет поправить код? Представляю его выражение лица когда он в блоке 1 или 2 сделает var a = 'best value' а на уровне 2 или 3 попробует сделать console.log(a);

Кто-то еще думает что Javascript (NodeJS) в проде это хорошо?

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

Вот маленький скриншот функционала на js, всего в 1 страницу

[img]/pics/88/original_2015-11-06_23-02-42.png[/img]

Посмотрите на код пока без блоков которые я выделил. Вы чего-нибудь подозрительное наблюдаете?
С виду абсолютно нормальная программа.

А вот и нет! это три (пронумерованы) независимых куска программы, которые выполняются в разных изолированных контекстах и никак друг с другом не связанные. Нет доступа к переменным на уровень выше, нет возможности вернуть значение. Хорошо я это знаю потому что целый день убил чтобы вкурить и написать это, а что делать программисту который пришел и хочет поправить код? Представляю его выражение лица когда он в блоке 1 или 2 сделает var a = 'best value' а на уровне 2 или 3 попробует сделать console.log(a);

Кто-то еще думает что Javascript (NodeJS) в проде это хорошо?

На качество кода на скриншоте не обращайте внимания - это результат многочисленного копипаста.

На качество кода на скриншоте не обращайте внимания - это результат многочисленного копипаста.

почитай вот это, может поможет:
Замыкания, область видимости

почитай вот это, может поможет:
[url=https://learn.javascript.ru/functions-closures]Замыкания, область видимости[/url]

Вот ты и попался - это не относися к замыканиям и областям видимости вообще!
Почитай это https://github.com/SpookyJS/SpookyJS/wiki/Introduction
Понятно что здесь используется сразу несколько стеков технологий между которыми пересылаются части js для последующего исполнения. НО! как это все запутанно выглядит.
То что вы видете выше это так сказать аналог eval функции в других языках - когда часть кода может храниться в виде текста и выполняться через функцию eval. Но в нормальных языках - это реально видно что текстовая информация и у тебя в голове точно не появится мысль что это тупо часть программы.

Вот ты и попался - это не относися к замыканиям и областям видимости вообще!
Почитай это https://github.com/SpookyJS/SpookyJS/wiki/Introduction
Понятно что здесь используется сразу несколько стеков технологий между которыми пересылаются части js для последующего исполнения. НО! как это все запутанно выглядит.
То что вы видете выше это так сказать аналог eval функции в других языках - когда часть кода может храниться в виде текста и выполняться через функцию eval. Но в нормальных языках - это реально видно что текстовая информация и у тебя в голове точно не появится мысль что это тупо часть программы.

Eval в классическом javascript это чистое зло. Eval is evil есть такое выражение,место потенциальных инъекций,и мало того еще дебажится через одно место.

Eval в классическом javascript это чистое зло. Eval is evil есть такое выражение,место потенциальных инъекций,и мало того еще дебажится через одно место. 

Зло то оно везде, просто в JS перевести код в текст и потом выполнить как 2 пальца. Не знаю на счет других языков - никогда таким не занимался.

Зло то оно везде, просто в JS перевести код в текст и потом выполнить как 2 пальца. Не знаю на счет других языков - никогда таким не занимался.

Dmitry Shnyrev
выполняться через функцию eval

вообще не понятно в каком контектсе весь этот код, присунутый как текста кусок, и его переменные будут выполняться...

люди добрые, подскажите, в каком редакторе,на каком плагине вы пилите Джаваскрипт?

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

[quote="Dmitry Shnyrev"]выполняться через функцию eval[/quote]

вообще не понятно в каком контектсе весь этот код, присунутый как текста кусок, и его переменные будут выполняться...

люди добрые, подскажите, в каком редакторе,на каком плагине вы пилите Джаваскрипт?

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

Den Brown
Dmitry Shnyrev
выполняться через функцию eval

вообще не понятно в каком контектсе весь этот код, присунутый как текста кусок, и его переменные будут выполняться...

люди добрые, подскажите, в каком редакторе,на каком плагине вы пилите Джаваскрипт?

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

Я использую это

[quote="Den Brown"][quote="Dmitry Shnyrev"]выполняться через функцию eval[/quote]

вообще не понятно в каком контектсе весь этот код, присунутый как текста кусок, и его переменные будут выполняться...

люди добрые, подскажите, в каком редакторе,на каком плагине вы пилите Джаваскрипт?

у меня как попадется JS кнопка, сделаная бизнес аналитиком, с тысячью вложенных if условий, так хоть на стенку бросайся без редактора...[/quote]

[url=http://jsbeautifier.org/]Я использую это[/url]

Den Brown
вообще не понятно в каком контектсе весь этот код

Ладно, пока отложим этот пример. Я думаю таких экзотических примеров в любом языке можно найти кучу.

Den Brown
люди добрые, подскажите, в каком редакторе,на каком плагине вы пилите Джаваскрипт?

Да в любом текстовом редакторе - в том же Sublime Text отлично можно редактировать js. А какие еще функции от редактора нужны специфические для js?

Den Brown
у меня как попадется JS кнопка, сделаная бизнес аналитиком, с тысячью вложенных if условий, так хоть на стенку бросайся без редактора...

Ну тут тебе редактор не поможет. Нужны специальные "украшатели" js. Ссылка Wilder отличные вариант.

[quote="Den Brown"]вообще не понятно в каком контектсе весь этот код[/quote]
Ладно, пока отложим этот пример. Я думаю таких экзотических примеров в любом языке можно найти кучу.

[quote="Den Brown"]люди добрые, подскажите, в каком редакторе,на каком плагине вы пилите Джаваскрипт?[/quote]
Да в любом текстовом редакторе - в том же Sublime Text отлично можно редактировать js. А какие еще функции от редактора нужны специфические для js?

[quote="Den Brown"]у меня как попадется JS кнопка, сделаная бизнес аналитиком, с тысячью вложенных if условий, так хоть на стенку бросайся без редактора...[/quote]
Ну тут тебе редактор не поможет. Нужны специальные "украшатели" js. Ссылка Wilder отличные вариант.

wilder
Я использую это

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

[quote="wilder"]Я использую это[/quote]

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