1. 程式人生 > 程式設計 >JavaScript eval()函式定義及使用方法詳解

JavaScript eval()函式定義及使用方法詳解

定義和用法

eval() 函式可計算某個字串,並執行其中的的 JavaScript 程式碼。

語法

eval(string)

返回值

通過計算 string 得到的值(如果有的話)。

說明

該方法只接受原始字串作為引數,如果 string 引數不是原始字串,那麼該方法將不作任何改變地返回。因此請不要為 eval() 函式傳遞 String 物件來作為引數。

如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,並通過該屬性呼叫它,則 ECMAScript 實現允許丟擲一個 EvalError 異常。

丟擲

如果引數中沒有合法的表示式和語句,則丟擲 SyntaxError 異常。

如果非法呼叫 eval(),則丟擲 EvalError 異常。

如果傳遞給 eval() 的 Javascript 程式碼生成了一個異常,eval() 將把該異常傳遞給呼叫者。

舉例

以下程式碼可以將"alert('Hello world')"字串作為引數,轉化成javaScprit程式碼進行執行,瀏覽器彈出提示框輸出'Hello world'

<script type="text/javascript">
  var a = "alert('Hello world')"
  eval(a)
</script>

eval()函式非常強大,我認為它在一定程度上體現出了javaScript這種動態語言的優點。

用這個函式,開發者可以在不改變第三方前端javaScript庫原始碼的基礎上,增加功能,或者修改功能,使得程式變得更為靈活。

比如我正在開發一個動態表格的小系統,後臺程式將表中的所有欄位,以及所有資料傳遞給前端,前端javaScript程式碼接收到資料以後,根據欄位自動生成表格。但我正在用第三方(layui)js框架,框架裡渲染表格的程式碼必須是固定寫好的,不符合動態生成需求,這個時候,可以使用eval()函式。

下面簡單看一下layui框架表格部分的使用說明

JavaScript eval()函式定義及使用方法詳解

表頭部分需要在javaScript程式碼中固定對應寫好,接收到指定資料介面的資料再生成表格。

如果每次需要的表格的欄位都不同,列數都不一樣。那麼就可用eval()函式拼接程式碼實現了。大致實現思路是,ajax請求到表頭的相關資料,javaScript程式碼根據這些資料自動生成符合框架要求的程式碼語句,然後傳遞到eval()函式中直接呼叫就可以了。非常的靈活與方便。

比如以下虛擬碼

<script>
  var code1 = "layui.use('table',function(){var table = layui.table;table.render({elem: '#demo',height: 312,url: '/demo/table/user/',page: true,cols: [[{"
  // ...這裡根據接收到的表各個欄位資訊自動拼接程式碼,形成字串 code2
  var code2 = "field: 'id',title: 'ID',width:80,sort: true,fixed: 'left'},{field: 'username',title: '使用者名稱',width:80},{field: 'sex',title: '性別',sort: true},{field: 'city',title: '城市',{field: 'sign',title: '簽名',width: 80},{field: 'experience',title: '積分',width: 80,{field: 'score',title: '評分',{field: 'classify',title: '職業',{field: 'wealth',title: '財富',width: 135,sort: false"
  var code3 = "}]]});});"
  var code = code1 + code2 + code3
  eval(code)
</script>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。