javascript之eval函數

Eval()函數 這是我在學習找到的一篇簡述Eval的文章,我在此轉貼並加入一點自己的心得!在此謝謝原創者 該函數可以把一個字符串當作一個JavaScript表達式一樣去執行它,具體來說,就是eval接受一個字符串類型的參數,將這個字符串作爲代碼在上下文環境中執行,並返回執行的結果。舉個小例子:

var the_unevaled_answer = "2 + 3";

var the_evaled_answer = eval("2 + 3");

alert("the un-evaled answer is " + the_unevaled_answer + " and the evaled answer is " + the_evaled_answer);

如果你運行這段eval程序, 你將會看到在JavaScript裏字符串"2 + 3"實際上被執行了。所以當你把 the_evaled_answer的值設成 eval("2 + 3")時, JavaScript將會明白並把2和3的和返回給the_evaled_answer。這個看起來似乎有點傻,其實可以做出很有趣的事。比如使用eval你可以根據用戶的輸入直接創建函數。這可以使程序根據時間或用戶輸入的不同而使程序本身發生變化,通過舉一反三,你可以獲得驚人的效果。

但是在使用eval函數是需要注意兩點:

1)它是有返回值的,如果參數字符串是一個表達式,就會返回表達式的值。如果參數字符串不是表達式,沒有值,那麽返回「undefined」。

2)參數字符串作爲代碼執行時,是和調用eval函數的上下文相關的,即其中出現的變量或函數調用必須在調用eval的上下文環境中可用。

 
對JavaScript的eval()中使用函數的進一步討論
《JavaScript語言精髓與編程實踐》的讀者I22141提出了一問題:爲什麽下面這段代碼在JScript和SpiderMonkey中表現不一樣:--------var func = eval("(function(){})");alert(typeof func);--------更...查看完整版>>對JavaScript的eval()中使用函數的進一步討論
 
javascript eval()
eval()是Javascript中最容易被濫用的函數。避免使用eval()避免使用Function 的構造函數: new Function()避免傳遞字符串給setTimeout 或 setInterval...查看完整版>>javascript eval()
 
給出一個表達式以及表達式裏面所有變量的值。求出這個表達式的值。類似javascript中的Eval().
給出一個表達式以及表達式裏面所有變量的值。求出這個表達式的值。類似javascript中的Eval().作者:timmy3310Runtime C# Expression Evaluator http://www.codeproject.com/csharp/runtime_eval.asp -----------...查看完整版>>給出一個表達式以及表達式裏面所有變量的值。求出這個表達式的值。類似javascript中的Eval().
 
ASP.NET2.0數據綁定函數Eval()的機制
     本文假設你已經了解ASP.NET 1.1的數據綁定(特別是Container這個局部變量)的機制,這裏主要分析ASP 2.0數據綁定做了那些改進。  ASP.NET 2.0 的數據綁定函數Eval()簡化掉了ASP 1.1神秘的Container.DataIte...查看完整版>>ASP.NET2.0數據綁定函數Eval()的機制
 
javascript混合的構造函數/原型方式
即用構造函數定義對象的所有飛函數屬性,用原型方式定義對象的函數屬性(方法)。Code<script type="text/javascript"> debugger; function Car(sColor, iDoors, iMpg) { this.color = sColor, ...查看完整版>>javascript混合的構造函數/原型方式