valoarea de retur
Returnează valoarea codului transmis la funcția ca un șir de caractere. În cazul în care codul nu se întoarce - se va întoarce valoarea nedefinită.
eval () - o funcție a obiectului la nivel mondial.
eval () poate fi utilizată pentru a calcula valoarea expresiei aritmetice înregistrate într-o formă șir, pentru executarea ulterioară. Să presupunem că există o variabilă x. Este posibil să se amâne evaluarea expresiei, care conține x. dacă expresia este setat la o variabilă ca un șir de caractere (de exemplu, „3 * x + 2“) și apoi invoca eval (), la un moment ulterior în cod.
Dacă argumentul trecut la eval (). nu este un șir de caractere, eval () returneaza neschimbata. Următorul exemplu definește un șir de constructor. și eval () nu calculează valoarea unei expresii înregistrate într-o formă de șir, și se întoarce obiect de tip String.
Această limitare este ușor de ocolit folosind toString ().
Dacă utilizați eval în mod indirect, prin numindu-l prin intermediul unui link, mai degrabă decât pur și simplu eval, în ECMAScript 5 funcționează în domeniul de aplicare la nivel mondial, nu locale; înseamnă eval este invocată în domeniul de aplicare la nivel mondial, iar codul va fi executat cu acces otsutviem la variabilele locale în domeniul de aplicare în care a fost numit.
eval () - o funcție periculoasă, care execută codul, care trece toate privilegiile de apelare. Dacă executați eval () cu un șir de caractere, care pot fi afectate de atacatori, puteți rula cod malitios pe dispozitivul unui utilizator cu drepturile de pagini web / expansiune dumneavoastră. Cel mai important, cod terță parte poate vedea domeniul de aplicare în care a fost numit eval (). care poate poate duce la atacuri, cum ar fi funcții.
Ca eval (), tind să fie alternative mai lente, deoarece cauzează JS interpret, în timp ce multe alte modele sunt optimizate motoare JS moderne.
Există un seif (și rapid!) Alternative Eval () pentru cazuri de utilizare comună.
Accesul la proprietăți
Nu trebuie să utilizați eval (). pentru a converti numele proprietăților în proprietățile. Luând în considerare următorul exemplu, în cazul în care un obiect de proprietate este utilizat pentru a avea acces la cunoscut până la execuție. Acest lucru se poate face cu eval:
Cu toate acestea, nu este necesară eval (). De fapt, utilizarea aici de surprize sale. În schimb, utilizați accesul la proprietățile. care este mai rapid și mai sigur:
Utilizați o funcție în loc de a executa fragmente de cod
Închiderile sunt de asemenea utile ca o modalitate de a crea funcții cu parametri fără a concatenare.
Transfer de date în loc de cod
De exemplu, modificați extensia create pagini web este neobișnuit și ar trebui să aibă o politică definită în XPath. în loc de cod JS.
Urmați cu cod drepturi limitate
Dacă doriți să execute codul, considerându-l pentru a rula cu privilegii sporite. Acest sfat se aplică în primul rând pentru extensii și aplicații Xul care pot fi folosite pentru acest Components.utils.evalInSandbox.
Utilizarea eval
Codul de mai jos conține ambele expresii eval (), care returnează un șir de caractere 42. Primul determinat „x + y + 1“; al doilea - șirul „42“.
Ultima expresie este executată
eval () va returna valoarea ultimei expresie executate
eval ca funcție de determinare șir cuprinzând „(“ și „)“ ca prefix și sufix
specificație
Vă mulțumim! Vă rugăm să verificați dosarul dvs. „Inbox“ pentru a confirma abonamentul.
Dacă anterior nu a confirmat abonarea la newsletter Mozilla, va trebui să o facă. Vă rugăm să verificați inbox-ul sau spam în căsuța poștală pentru a vedea dacă acesta nu a fost o scrisoare de la noi.
Ascunde abona la newsletter
De ce MDN arată diferit?
MDN se schimbă, concentrându-se doar pe documentația tehnologiilor web. Toate același conținut mare de a rămâne aici; vom schimba doar elementele vizuale și de navigare pentru a vă ajuta să găsiți rapid documentația pentru tehnologia web.
Dar nu vă faceți griji, MDN și Mozilla sunt încă împreună. De fapt, vom actualiza numai proiectarea MDN în mod repetat, pentru a se conforma cu noua emblema și culorile Mozilla.
Cititi mai multe despre reproiectarea în post pe blog-ul nostru. Vă mulțumim pentru utilizarea MDN!
Ascunde mesaj despre reproiectarea