1. 程式人生 > 其它 >js高階-eval()函式

js高階-eval()函式

1.eval()函式定義

它是一個函式,只接收一個字串型別的引數

eval(string)

如果輸入的引數是js程式碼,會被函式直接解析執行

如果輸入的引數是普通字串,則返回該字串

例項如下

1.1 輸入string為js程式碼

eval("var  a =1;var b=4; alert(a+b)");

執行alter語句顯示為5

可以把eval()中的string類比成html檔案中的<script><script/>包裹的內容,符合js邏輯的語句在此解析並執行

1.2普通字串

eval('hello');
返回字串hello

1.3解析json資料

會報錯

原因在於:

json本身具有大括號{},eval()在解析時會識別為js語句塊的開始和結束,所以顯示無效語法報錯

解決方法:

強制的將{}轉換成非js語句塊,那麼就需要加上圓括號(json),它的作用在於將括號內的表示式(expression)轉換為物件,而不是語句(statement)來執行

alert(eval("{}"); // return undefined

//物件字面量不進行()轉換,會被識別為語句塊,空語句塊

alert(eval("({})");// return object[Object]

//進行()轉換,則識別為一個空物件

所以要給json變數加上(),因為是變數新增括號,所以用字串加法,需要加""

var josnobj = eval("("+jsonstr+")");
//實際上就解析的(jsonstr)