Function eval( ) của javaScript dùng để làm công việc :” evaluating,executing a data structure and returning the result.”
Một data structure có thể là :*Toán cộng,trừ, nhân,chia hay một tập hộp tóan gồm nhiều cộng trừ nhân chia gọi tên chung là arithmetic expression .
* Một tập họp nhiều chữ chứa những mệnh lệnh viết theo code có tên gọi chung là string,codestring.
Lưu ý khi xử dụng eval() thì không cần phải call như những functions thông thường khác.
Thí dụ 1- Evaluating and returning arithmetic expression.
Mở Notepad.Trong script tags.
Nếu viết :
alert(eval(15*2)); // thì output là 30
Nếu viết :
alert(eval(4095-2100+50.555+(10/2))); // output là 2047.555
Thí dụ 2- Evaluating , executing a string and returning the result.
Hai thí dụ nầy cho thấy eval() function làm công vịêc của evaluator và executor
x=12 ;
alert(eval('x + 4' )); // evaluator,returns 16
x = 12;
eval(' y = x + 4;alert(y);' ); // executor,returns 16
a- Đối với string,nhớ phải viết string trong dấu ngoặc kép “ “ hay ngoặc đơn ‘ ‘ thì mới có kết quả.
Làm như vậy để cho eval() function evaluates những gì ở trong ngoặc đơn hay kép rôi returns the result or value.Nếu không có value to be returned thì eval() function returns the expression in executable form.
Nếu viết :
var x=10
var y=15
alert(eval( ‘x+y+25’ )) // thì output là 50
Nếu viết :
eval("a=2;b=10;alert(a+b);") thì output là 12
Nếu viết :
var x=17
var str="if(x==7){alert('y is 50');}else('y is 25');"
alert(eval(str)) ; // thì output là y is 25
Nếu viết :
var x=7
var str="if(x==7){alert('y is 50');}else('y is 25');"
alert(eval(str)) ; // thì output là y is 50 và undefined
Nếu viết :
var x=10
eval( "if(x==10){alert('Good morning')} else alert(' hello' )" ) // output là Good morning
Nếu viết :
var x="bonjour"
eval( "if(x==10){alert('Good morning')} else alert('hola' )" ) // output là hola.
Chúng ta thấy tất cả strings trên có chứa javaScript code nên đôi khi gọi string là codestring.
Khi nào eval() bỏ trống hoặc variable không có value hoặc element trong string không tìm thấy thì undefined xuất hiện
b- Đối với Boolean literals (true,false) thi không viết trong dấu ngoặc đơn hay kép.
myVar=eval(false);
alert(myVar); // output là false
Thí dụ 3- Đối với array literals gồm có nhiều elements khác nhau.
Phải viết những elements cách nhau bằng dấu phẩy và tất cả phải ở trong brackets
Nếu viết :
myVar=eval( ["dolphin","sharp","tuna","whale"] )
alert(myVar[3] ) // output là whale
eval() function chuyển đổi array thành executable code để chuyển cho variable myVar.Rồi alert viết ra kết quả của index số 3 là whale.
Theo qui định của javaScript, index đầu tiên gọi là 0,index thứ hai là 1,index thứ ba là 2,index thứ tứ là 3.
Thí dụ 4- Đối với string gồm nhiều expressions như sau đây.
Thì viết :
eval("alert(\"Hello Friend\");\alert(\"Bonjour Mon Ami\");\
alert(\"Hola Amigo\");\alert(\"Chào Bạn\");\alert(\"How Are You?\");\
alert(\"Comment Allez Vous?\")")
outputs lần lược xuất hiện : Hello Friend; Bonjour Mon Ami; Hola Amigo;Chào Bạn; How are you ?; Comment Allez Vous ?
Trong alert nhớ phải dùng dấu \” thay cho dấu ngoặc kép Mỗi expression phải cách nhau bằng dấu chấm phẩy.
Nếu tập họp quá dài cần xuống hàng thì phải viết thêm dấu nối \ goị là backslash rồi mới viết xuống hàng.
Nếu không làm đúng như hướng dẫn thì không có kết quả.
LÝ DO TẠI SAO RẤT NHIỀU PROGRAMMERS KINH NGHIỆM KHUYÊN KHÔNG NÊN XỬ DỤNG FUNCTION EVAL( )
Muốn biết rõ lý do cần phải trải qua thực tập.Trong những bài kế tiếp sau bài nầy sẽ có vài thí dụ chứng minh ý kiến của các programmers kinh nghiệm khi xử dụng eval() function như sau :
.Unsafe (security issues,security hole)
.slower than alternative methods