JavaScript eval() 函数

 JavaScript  2018-11-24  admin  2151  2903

JavaScript eval() 函数

定义和用法

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法

eval(string)

说明

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出

  1. 如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

  2. 如果非法调用 eval(),则抛出 EvalError 异常。

  3. 如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

使用

var str = "5+20";
alert(str); //5+20
alert(eval(str)); //25

var str = 5+"+20";
alert(str); //5+20
alert(eval(str)); //25

var str = "confirm('abcde')";
alert(str); //confirm('abcde')
alert(eval(str)); //确认对话框 abcd

eval() 函数可编译并执行任何 JavaScript 代码。

严重:JSON 解析器 eval() 安全问题说明,大家都知道eval()函数就是evaluation:它的特点如果遇到运算符(/、*、-、+、>>等),它会直接计算结果.

var txtJson = '{' + 
    '"name": "js",' + 
    '"date": 2018-11-1' + 
'}';
//利用函数 eval() 转换成JSON对象
var obj = eval ("(" + txtJson + ")");
//输出date
alert("cd_name:" + obj.date); //2006


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

JavaScript eval() 函数 —— code.cent123.com

相关推荐


esp32 使用mqtt 通讯

esp32 使用mqtt 通讯基于go的mqtt 客户端packagemain import( "fmt" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "gobot.io/x/gobot" &qu

GoFrame 框架中使用 mqtt 协议通讯

GoFrame 框架中使用 mqtt//SPDX-License-Identifier:MIT //SPDX-FileCopyrightText:2022mochi-mqtt,mochi-co //SPDX-FileContributor:mochi-co packagemqtt import( "flag" "gfmqtt/internal/

laravel 自定义写入日志

laravel 自定义写入日志if(!function_exists('myLog')){ /** *生成自定义文件日志内容 *@param$data *@paramstring$title *@parambool$isClear *@returnvoid *@Author:cent123.com */ functionmyLog($data,string$tit

php redis 分布式锁

Redis 分布式锁是一种使用 Redis 数据库来实现的同步机制,用于在分布式系统中保证多个进程或线程对共享资源的互斥访问。Redis 分布式锁的基本原理是使用 Redis 的 SETNX 命令来尝试设置一个键,如果这个键不存在,那么获取锁成功,否则获取锁失败。获取锁成功后,需要设置锁的过期时间,以防止锁被永久占用。释放锁时,需要删除这个键。Redis 分布式锁有一些优点和缺点:优点:Redis