![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 18.08.2010 Skąd: Komancza (/Oslo) Ostrzeżenie: (0%)
|
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? :] |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%)
|
eval ale napewno ktoś to napisze
"eval is evil" (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 18.08.2010 Skąd: Komancza (/Oslo) Ostrzeżenie: (0%)
|
Dzieki wielkie, uzylem tego, ale nie ma jakiejs innej, bezpieczniejszej metody?
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%)
|
Możesz sam takową napisać, no ale dla złożonych działań matematycznych może być problem.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%)
|
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 (IMG:style_emoticons/default/smile.gif)
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
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.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%)
|
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 (IMG:style_emoticons/default/smile.gif) - 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 ) . |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
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. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 18.08.2010 Skąd: Komancza (/Oslo) Ostrzeżenie: (0%)
|
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.
Ten post edytował Wuesek 18.10.2010, 15:22:50 |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 22:48 |