js中eval() 方法的使用以及一些特殊的使用方式

yumo6662个月前 (05-21)技术文章14

1、eval方法只能在非严格模式中进行使用,在use strict中是不允许使用这个方法的。

2、eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值。如下:

var code1='"a" + 2'; //表达式

var code2='{a:2}'; //语句

alert(eval(code1)); //->'a2'

alert(eval(code2)); //->2

alert(eval('(' + code2 + ')')); //->[object Object]

当eval中的字符串内是对象时加上括号则可以将原对象原样返回,如果将code2={a:2,b:3}时直接eval(code2)时会报错,加上括号就会将code2原样返回。

3、eval直接在函数内部使用则返回的是局部变量

function te {

eval('var a=1;')

}

te;

alert(a);//这样会报错,因为a是局部变量,只能在te方法内使用

4、有两种的处理方式可以使在函数内部使用的eval成为全局变量

(1)利用window.eval使其成为全局的

function te {

window.eval(‘var a=1’)

a 变量也是全局的

(2) function te {

var a=eval;

a(‘var b=1’);

这种方式下变量b 也是全局的。

所以说在非严格的模式下,又多了一种方法将JSON字符串形式转换为对象的形式。就是利用var m=eval(‘(’+data+’)’),m是JSON对象。其功能和JSON.parse是相似的,但是当已经为通过JSON.parse转换为对象后的JSON不能再调用该函数继续进行转换,这样会报错,但是eval方法不会当传入字符串是对象使继续使用上述的方式,然会返回原对象。

相关文章

python强大但很危险的一个函数eval()

在 Python 中,eval() 是一个强大但危险的函数,用于执行字符串形式的 Python 表达式。以下是深度解析:一、基础用法result = eval(expression, globals=...

「前端开发」eval() 函数认知和学习以及注意事项

一、简单说明简单说几点吧:eval() 函数在 JavaScript 中是一个非常强大的函数,它可以将传入的字符串当作 JavaScript 代码进行执行。然而,需要明确的是,eval() 并不直接支...

干货 | 深度辨析 Python 的 eval() 与 exec()

优质文章,第一时间送达!Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。大部分函数是我们经常使用的,例如 p...

还在用Python的eval处理用户输入?你的代码可能正在“裸奔”!

凌晨3点,程序员小王被急促的电话惊醒。线上系统突然删光了所有用户订单数据——仅仅因为一段用了eval()的代码。这不是电影情节,而是某电商平台真实的安全事故。今天我们就来深挖这个潜伏在无数Python...

越聪明越会撒谎?OpenAI推理模型o3/o4-mini幻觉率翻倍,嘴还很硬

OpenAI 最新发布的推理 AI 模型 o3 和 o4-mini 在性能上又创新高,就在大家期待它能进一步提升日常工作的生产力时,许多用户却发现,它们的幻觉率却比前代模型要高了不少。据 OpenAI...

GPT-4o医学知识覆盖率仅55%?大模型医疗能力“体检报告”来了

MedKGEval团队 投稿量子位 | 公众号 QbitAI医疗大模型知识覆盖度首次被精准量化!在医疗领域,大语言模型(LLM)的潜力令人振奋,但其知识储备是否足够可靠?腾讯优图实验室天衍研究中心的最...