【eval()函数】——前端界面实现用户写JS代码进行界面修改配置

前言:

  在开发的产品应用到实际用户的时候,或多或少会遇到产品的功能解决不了客户的各种小众化奇特需求,开发起来耗时耗力,通用性几乎没有,所以一般的产品都会预留一个客户可以手写js代码直接更改界面的配置。

  有两种思路,一种是将用户输入的代码和原先代码统一打包生成新文件然后进行执行,还有一种就是eval()函数。第一种实现起来比较复杂,eval函数实现起来比较方便。

 

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'

复制代码

    var a = "alert('Hello world')"

    eval(a)

复制代码

 

注意:

  eval()函数比较危险,容易被注入恶意代码攻击,所以应用范围要注意。

posted @ 2022-06-17 14:38  不爱写代码的石健  阅读(373)  评论(0编辑  收藏  举报