
正文
javascripteval,JavaScripteval的缺陷
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
javascript中eval是什么函数的作用和缺陷?
eval方法是在运行时对脚本进行解释执行,而普通的javascript会有一个预处理的过程。所以会有一些性能上的损失,但是通常通过一些手段能将这些性能损失降低到非常少。不至于谈虎色变。
eval通常用在一些需要动态执行字符串,或将字符串转为javascript对象的场景,比如将json字符串转为javascript对象。
至于eval容易被XSS攻击是属于想当然的说法吧,XSS攻击就是在你的页面上嵌入html或javascript代码,我觉得与是否使用eval方法没有什么关系。
相关问答
Q1: JAVASCRIPT 里 EVAL的用法
eval顾名思义是执行语句的作用,在浏览器地址栏中输入:
javascript:eval(1+2)
浏览器将以写文档流方式输出3.
(有的系统删除了javascript:协议已注册的程序,则无法使用javascript:协议)
有时候遇到一个问题,比如说有10个radio元素,它们的ID都是以ye01,ye02,ye03来命名,那么在循环语句中你就很难动态的取到对象的句柄,有了eval可以先把相同的字符串和01,02..先合并起来再执行后面的语句,就可以取到对象的句柄了.
如:
script defer
var a="ye";
b="1818";
c=eval(a+b);
alert(c.value);
/script
input id="ye1818" value="你好" /
eval是执行的意思,你把变量赋值这些都放在里面是不合理的.
Q2: javascript中eval的用法
JavaScript eval() 函数
JavaScript 全局对象
定义和用法:
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法:
eval(string)
返回值:
通过计算 string 得到的值(如果有的话)。
说明:
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
抛出:
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
扩展资料:
调用eval函数的三种情况:
1、直接调用
直接调用时,eval函数相关的执行环境属性ThisBinding,LexicalEnvironment,VariableEnvironment的值如下:
a) ThisBinding是调用eval函数时,调用方执行环境的ThisBinding
b) LexicalEnvironment是调用eval函数时,调用方执行环境的LexicalEnvironment
c) VariableEnvironemnt是调用eval函数时,调用方执行环境的VariableEnvironment
2、间接调用
所谓间接调用,即将eval赋值给另一个变量后在调用
3、严格模式下的eval
在严格模式下,eval的LexicalEnvironment,VariableEnvironment指向属于eval自己的Lexcial Environment,而不是调用方的Lexical Environment,但是ThisBinding还是调用方的ThisBinding。
同时,在严格模式下如果eval直接调用,那么eval的Lexical Environment的outer指针指向调用方的Lexical Environment,否则,如果是间接调用,那么eval的Lexical Environment的outer指针指向全局环境的Lexical Environment。
参考资料来源:百度百科--eval()
Q3: 在JS中eval函数是什么意思
它的功能是把对应的字符串解析成JS代码并运行
比如说你现在要运行一个可变的方法
function
name1(){……}
function
name2(){……}
var
m="name1";
eval(m+'()');//运行name1();
m='name2';
eval(m+'()');//运行name2();
Q4: JS中eval的作用是什么
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
script type="text/javascript"
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
/script
/*
输出结果:
200
4
27
*/
Q5: Javascript中eval()函数具体功能是什么?
eval()函数功能是将某段字符串当成JS语句来执行。
例如:
var str = "var a = {}";
eval(str);
即相当于直接执行
var a = {};
通常在执行AJAX调用后处理回传过来的数据时会用到,例如回传过来的字符串是JSON格式时,可以直接使用eval()。
如:
回传的语句是
responseText = "{a:'aa',b:'bb'}";
可直接调用为
eval("var o = "+responseText);
即相当于
var o = {a:'aa',b:'bb'};





