Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: зачем так часто вставляют eval();?
 
 автор: DEM   (11.04.2008 в 14:32)   письмо автору
 
 

В последнее время довольно часто вижу, что в функцию eval(); вставляю сздание функций, оперции сравнения, циклы и т.д. и, что самое интересное, это не строковые значения!
То есть Вот пример:
eval(function func(int i){document.wrute(i);});
И т.д. и т.п.
Думал просто случаяно попадается, но увидел здесь такое же: http://softtime.ru/forum/read.php?id_forum=4&id_theme=52055&page=1
И стало интересно ))) Это новая мода или просто какой-то гениальный ход, который мне не понять?

   
 
 автор: Antohins   (11.04.2008 в 14:42)   письмо автору
 
   для: DEM   (11.04.2008 в 14:32)
 

eval выполняет javascript код заключенный в его скобках. я его часто юзаю когда получаю js коды с помощью ajax...

   
 
 автор: mechanic   (11.04.2008 в 16:03)   письмо автору
 
   для: Antohins   (11.04.2008 в 14:42)
 

никогда не юзаю и всячески стараюсь обойти это зло
думаю даже при запросе JS кода через ajax можно в итоге обойтись без eval

   
 
 автор: Antohins   (11.04.2008 в 16:05)   письмо автору
 
   для: mechanic   (11.04.2008 в 16:03)
 

передаем несколько строк именно js кода.. сколько не старался, другого выхода не нашел. не то чтобы не смог реализовать, а не нашел.и почему вы считаете это злом?

   
 
 автор: mechanic   (11.04.2008 в 16:32)   письмо автору
 
   для: Antohins   (11.04.2008 в 16:05)
 

eval is evil, известная фраза
да и потому что считаю, что этим пользуются те, кто не смог придумать другого решения

   
 
 автор: Antohins   (11.04.2008 в 17:04)   письмо автору
 
   для: mechanic   (11.04.2008 в 16:32)
 

ок, спасибончез, учтем.

   
 
 автор: SHAman   (11.04.2008 в 18:36)   письмо автору
 
   для: mechanic   (11.04.2008 в 16:32)
 

Это не ответ. Это нормальная функция, которая реализована во всех языках высокого уровня. Да, она тормозная. Ну и что? К тому же, не смотря на это, я ни разу не видел, чтобы из-за eval тормозило что-нибудь. Обычно туда не запихивают целое приложение. Туда запихивают пару строк, как правило. И нормально работает. В чем минусы?

   
 
 автор: mechanic   (11.04.2008 в 22:58)   письмо автору
 
   для: SHAman   (11.04.2008 в 18:36)
 

>Да, она тормозная. Ну и что?
может и индексами в мускуле тогда не пользоваться? подумаешь медленно будет, ну и что?
>Это нормальная функция, которая реализована во всех языках высокого уровня
в C / C++ / C# тоже?

не нравится оно мне, не юзаю, считаю вообще дурным тоном.. мое имхо...

   
 
 автор: SHAman   (11.04.2008 в 23:59)   письмо автору
 
   для: mechanic   (11.04.2008 в 22:58)
 

Ладно, во всех скриптовых языках.

Скажите, как вы догружаете JS Ajax-ом? Я вот знаю метод, но сначала вы:)

   
 
 автор: mechanic   (12.04.2008 в 00:21)   письмо автору
 
   для: SHAman   (11.04.2008 в 23:59)
 

не приходилось.. когда столкнусь, уверен, найти решение не составит труда

   
 
 автор: Алексей Юрьевич   (12.04.2008 в 19:36)   письмо автору
 
   для: SHAman   (11.04.2008 в 23:59)
 

Заинтересовали:)

   
 
 автор: SHAman   (12.04.2008 в 22:33)   письмо автору
 
   для: Алексей Юрьевич   (12.04.2008 в 19:36)
 

Я, если нужно подгрузить много скрипта и лень использовать eval, отвечаю этим:
<script language="javascript" src="response.js"></script>

Получаю это на клиенте и встраиваю в DOM. Сразу после этого, браузер загружает response.js и с ним можно работать так, как обычно. Как видно, никаких eval тут нет. Но если задуматься, то eval происходит автоматически после того, как браузер загрузит response.js

   
 
 автор: Lstasss   (12.04.2008 в 21:44)   письмо автору
 
   для: SHAman   (11.04.2008 в 23:59)
 

Для передачи массивоа разработал такое решение:
отправить с сервера строку, вида
str1;str2;str3....

где str1 и str2 имеют вид
var1,var2,var3

потом

var data = query.responseText.split(';');
var resData=[];
for(i=0;i<data.length;i++){
  resData[i]=data[i].split[','];
}
в итоге в resData у нас прописан массив массивов


eval is evil - Quirksmode

   
 
 автор: DEM   (12.04.2008 в 00:21)   письмо автору
 
   для: DEM   (11.04.2008 в 14:32)
 

Для чего используется eval(); я понимаю, мне инетесно, зачем его исопльзовать так:

eval(function func(int i){ document.write(i);})l;

Вот нафига тут eval???

   
 
 автор: Lelik   (12.04.2008 в 01:40)   письмо автору
 
   для: DEM   (12.04.2008 в 00:21)
 

наверное вам не приходилось сталкиваться с разницей между строкой и частью исполняемого кода :)

   
 
 автор: Lstasss   (12.04.2008 в 21:44)   письмо автору
 
   для: Lelik   (12.04.2008 в 01:40)
 

Если не затруднит, объясните смысл использования eval() в вышеприведённом коде.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования