Wuesek
17.10.2010, 17:00:07
Witam.
Chodzi mi o to, zeby po podaniu jakiegos dzialania matematycznego w inpucie (np. 5+3), i ew. zapisanie jego wartosci w zmiennej, JS po jej wywolaniu zwrocil nie wartosc inputa, a wyniku tego dzialania.
Czy trzeba tu uzyc czegos w rodzaju parseInt? Jak tak, to jak? :]
skowron-line
17.10.2010, 17:04:25
eval ale napewno ktoś to napisze
"eval is evil"
Wuesek
17.10.2010, 18:11:15
Dzieki wielkie, uzylem tego, ale nie ma jakiejs innej, bezpieczniejszej metody?
skowron-line
17.10.2010, 20:02:07
Możesz sam takową napisać, no ale dla złożonych działań matematycznych może być problem.
kamil4u
17.10.2010, 20:59:38
Akurat w tym wypadku eval jest chyba najlepszym rozwiązaniem. Innym jest np. użycie wyrażeń regularnych lub indexOf + zamiana ciągu na liczbę(parseInt lub parseFloat) + odpowiednich obliczeń matematycznych. Tylko to nie będzie raczej takie poste. A dla złożonych obliczeń to nawet eval nie pomoże
Crozin
17.10.2010, 21:46:52
W tym miejscu powinieneś dokładnie opisać sytuację. Kto będzie tego używać i jakie możliwości ma to mieć.
Cytat
Akurat w tym wypadku eval jest chyba najlepszym rozwiązaniem.
Eval nigdy nie jest dobrym rozwiązaniem. A tym bardziej w przypadku, gdy kod do wykonania pochodzi nie wiadomo od kogo. MOże być co najwyżej najłatwiejszym rozwiązaniem.
kamil4u
17.10.2010, 21:55:10
Cytat
A tym bardziej w przypadku, gdy kod do wykonania pochodzi nie wiadomo od kogo
Dość łatwo sprawdzić czy dane są takimi danymi jak trzeba

- Wydaje mi się też, że eval będzie też najszybszym(i najkrótszym) rozwiązaniem - a co Ty proponujesz? Załóżmy, że chodzi o obliczania z +,-,*,/,.,( i ) .
Crozin
17.10.2010, 22:17:43
No w przypadku JS eval nie jest w sumie aż tak straszny (przecież zawsze każdy może sobie uruchomić dowolny kod na stronie), jednak nadal jest to niezwykle niebezpieczna cecha języka i powinno się tego unikać za wszelką cenę.
Jeżeli chodzi tylko o podstawowe operacje i tylko na liczbach, to rzeczywiście... eval może być jakimś rozwiązaniem. Jednak nawet tak proste operacje jak obsługa błędów będą na pewno bardzo utrudnione.
Bardziej sensownym rozwiązaniem (jednak dużo bardziej skomplikowanym) wydaje się być napisanie parsera wyrażeń matematycznych.
Wuesek
18.10.2010, 15:20:33
Nie no, jeszcze jestem za slaby w JS zeby pisac samemu parsery. Trzeba mi narazie tylko do kalkulatorka, i juz uzylem evala, ale jakbym cos powazniejszego pisal, to by sie przydalo jakos inaczej to zrobic; a na pewno jak bym pisal w PHP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.