Loading:


JavaScript Funkcja eval

Interpretuje i wykonuje kod JavaScript zawarty w łańcuchu znaków, bez odniesienia do żadnego konkretnego obiektu.

Składnia

eval(ciąg znaków, [obiekt])

Parametry


ciąg znaków -Łańcuch znaków reprezentujący wyrażenie, instrukcję lub sekwencję instrukcji JavaScript. Wyrażenie może zawierać zmienne i własności istniejących obiektów.


obiekt -Argument opcjonalny; jeżeli podano, interpretacja jest ograniczana do otoczenia określonego obiektu.


Opis


eval jest funkcją najwyższego poziomu, niepowiązaną z żadnym obiektem.

Argumentem funkcji eval jest łańcuch znaków. Jeśli łańcuch znaków reprezentuje wyrażenie, funkcja eval oblicza jego wartość. Jeśli argument reprezentuje jedną lub kilka instrukcji JavaScript, eval wykonuje je. Nie wywołujmy eval, aby wykonać wyrażenie arytmetyczne; JavaScript oblicza je automatycznie .

Jeśli utworzymy wyrażenie arytmetyczne jako łańcuch znaków, możemy użyć eval, aby obliczyć je w późniejszym czasie. Na przykład, przypuśćmy że mamy zmienną x. Możemy przełożyć obliczenie wyrażenia zawierającego x w czasie poprzez przypisanie łańcucha znaków z wartością wyrażenia do zmiennej, na przykład, "3 * x + 2" , i wywołać funkcję eval w późniejszym punkcie skryptu.

Jeśli argument eval nie jest łańcuchem znaków, eval zwróci niezmieniony argument. W poniższym przykładzie podany jest konstruktor String, więc eval zwraca obiekt String zamiast wykonania instrukcji z łańcucha znaków.

eval(new String("2+2")); // zwraca obiekt String zawierający wartość "2+2"
eval("2+2");             // zwraca 4


Można obejść to ograniczenie , poprzez użycie metody toString.

var expression = new String("2 + 2");

eval(expression.toString());



Nie można używać funkcji eval pośrednio poprzez wywołanie jej przez inną nazwę niż eval. W przeciwnym wypadku może wystąpić błąd czasu wykonania. Przykładowo, nie powinno się używać poniższego kodu:

var x = 2;
var y = 4;
var mojEval = eval;
mojEval("x + y");


Nie powinno się używać funkcji eval do przekształcania nazw własności do własności. Przyjrzyjmy się następującemu przykładowi. Funkcja getFieldName(n) zwraca nazwę określonego elementu formularza w postaci łańcucha znaków. Pierwsza instrukcja przypisuje zmiennej field nazwę trzeciego elementu formularza. Instrukcja druga używa eval do wyświetlenia wartości formularza.

var pole = getFieldName(3);

document.write("Pole o nazwie ", pole, " ma wartość ",

eval(pole + ".value"));



Jednakże funkcja eval nie jest tu konieczna. W rzeczywistości, jej użycie jest niezalecane. Zamiast, użyjmy znacznie szybszych operatorów pamięci:

var pole = getFieldName(3);

document.write("Pole o nazwie ", pole, " ma wartość ",

pole[value]);

 



Napisz Artykuł

Listing

niema


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=2694

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors