js中eval()的使用說明


今天寫小游戲sdk的時候,對方調用我的方法,然后傳了個方法過來,我用eval判斷了一下傳過來的是否是function,但是結果出錯了,於是想弄明白eval究竟是怎么使用的,查了下資料,記錄如下。

定義

eval() 可以接受一個字符串str作為參數,並把這個參數作為腳本代碼來執行。

參數

如果參數是一個表達式,eval() 函數將執行表達式;

如果參數是Javascript語句,eval()將執行 Javascript 語句;

如果執行結果是一個值就返回,不是就返回undefined,如果參數不是一個字符串,則直接返回該參數。

語法

eval(string)

舉例

eval("var a=1");//聲明一個變量a並賦值1。

eval("2+3");//執行加運算,並返回運算值。

eval("mytest()");//執行mytest()函數。

eval("{b:2}");//聲明一個對象,如果想返回此對象,則需要在對象外面再嵌套一層小括如下:eval("({b:2})")。

注意:使用eval來解析JSON格式字符串的時候,會將{}解析為代碼塊,而不是對象的字面量。
1,在JSON格式的字符串前面拼接上 "var o =";
2,把JSON格式的字符串使用()括起來,就不會將{}解析為代碼塊,而是表達式。

函數作用域

eval()函數並不會創建一個新的作用域,並且它的作用域就是它所在的作用域,有時候需要將eval()函數的作用域設置為全局,當然可以將eval()在全局作用域中使用,這個時候可以用window.eval()的方式實現。

異同點

共同點:都可以講字符串轉化為js代碼

不同點:Function創建出來的函數,並不會直接調用,只有當手動去調用創建出來的函數的時候才,eval把字符串轉化為代碼后,直接就執行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM