Javascript中eval函数的使用方法与示例_基础知识

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

语法 eval(string) 参数 描述 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 返回值 通过计算 string 得到的值(如果有的话)。

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

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

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

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

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

提示和注释 提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。

下面为大家分享一个常用的小例子:

<SCRIPT language="javascript">
function showsubmenu(sid)
{
whichEl = eval("submenu" + sid);
if (whichEl.style.display == "none")
{
eval("submenu" + sid + ".style.display=\"\";");
}
else
{
eval("submenu" + sid + ".style.display=\"none\";");
}
}
</SCRIPT>

Eval 函数

功能:先解释Javascript代码,然后在执行它

用法:Eval(codeString)

codeString是包含有Javascript语句的字符串,在eval之后使用Javascript引擎编译。 
举个小例子:

var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
alert("the un-evaled answer is " + the_unevaled_answer + " and the evaled answer is " + the_evaled_answer);

如果你运行这段eval程序, 你将会看到在JavaScript里字符串"2 + 3"实际上被执行了。所以当你把the_evaled_answer的值设成 eval("2 + 3")时, JavaScript将会明白并把2和3的和返回给the_evaled_answer。 

这个看起来似乎有点傻,其实可以做出很有趣的事。比如使用eval你可以根据用户的输入直接创建函数。这可以使程序根据时间或用户输入的不同而使程序本身发生变化,通过举一反

三,你可以获得惊人的效果。

在实际中,eval很少被用到,但也许你见过有人使用eval来获取难以索引的对象。 文档对象模型(DOM)的问题之一是:有时你要获取你要求的对象简直就是痛苦。例如,这里有一个函数询问用户要变换哪个图象:变换哪个图象你可以用下面这个函数:

function swapOne()
{
 var the_image = prompt("change parrot or cheese","");
 var the_image_object;
 if (the_image == "parrot")
 {
 the_image_object = window.document.parrot;
 }
 else
 {
 the_image_object = window.document.cheese;
 }
 the_image_object.src = "ant.gif";
} 

连同这些image标记:

<img src="/stuff3a/parrot.gif" name="parrot" />
<img src="/stuff3a/cheese.gif" name="cheese">

请注意象这样的几行语句:
the_image_object = window.document.parrot;
它把一个图象对象敷给了一个变量。虽然看起来有点儿奇怪,它在语法上却毫无问题。但当你有100个而不是两个图象时怎么办?你只好写上一大堆的 if-then-else语句,要是能象这样就好了:

function swapTwo()
{
 var the_image = prompt("change parrot or cheese","");
 window.document.the_image.src = "ant.gif";
} 

不幸的是, JavaScript将会寻找名字叫 the_image而不是你所希望的"cheese"或者"parrot"的图象,于是你得到了错误信息:”没听说过一个名为the_image的对象”。 
还好,eval能够帮你得到你想要的对象。

function simpleSwap()
{
 var the_image = prompt("change parrot or cheese","");
 var the_image_name = "window.document." + the_image;
 var the_image_object = eval(the_image_name);
 the_image_object.src = "ant.gif";
} 

如果用户在提示框里填入"parrot",在第二行里创建了一个字符串即window.document.parrot. 然后包含了eval的第三行意思是: "给我对象window.document.parrot" - 也就是你要的那个图象对象。一旦你获取了这个图象对象,你可以把它的src属性设为ant.gif. 有点害怕?用不着。其实这相当有用,人们也经常使用它。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
eval
javascript基础知识、javascript基础知识点、javascript eval、javascript eval json、javascript eval函数,以便于您获取更多的相关知识。

时间: 2024-08-17 18:36:52

Javascript中eval函数的使用方法与示例_基础知识的相关文章

Javascript中的迭代、归并方法详解_基础知识

迭代方法 在Javascript中迭代方法个人觉得尤为重要,在很多时候都会有实际上的需求,javascript提供了5个迭代方法来供我们操作,它们分别为: every() 对数组中的每一个项运用给定的函数,如果每项都返回true,那么就会返回true filter() 对数组中的每一个项运用给定的函数,把返回true的项组成一个新数组并返回 forEach() 对数组中的每一项运用给定的函数,但是没有任何的返回值 map() 对数组中的每一个项运用给定的函数并返回每次函数调用的结果组成新的数组

javascript中call apply 与 bind方法详解_基础知识

在JavaScript中,call.apply和bind是Function对象自带的三个方法,本文将通过几个场景的应用,来详细理解三个方法. call() call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. 当调用一个函数时,可以赋值一个不同的 this 对象.this 引用当前对象,即 call 方法的第一个参数. 通过 call 方法,你可以在一个对象上借用另一个对象上的方法,比如Object.prototype.toString.call([]),

在JavaScript中操作数组之map()方法的使用_基础知识

 JavaScript 数组map()方法创建一个新的数组使用调用此数组中的每个元素上所提供的函数的结果.语法 array.map(callback[, thisObject]); 下面是参数的详细信息:     callback : 从当前的元素函数产生新的数组的元素.     thisObject : 对象作为该执行回调时使用 返回值: 返回创建数组兼容性: 这种方法是一个JavaScript扩展到ECMA-262标准;因此它可能不存在在标准的其他实现.为了使它工作,你需要添加下面的脚本代码

在JavaScript中使用对数Math.log()方法的教程_基础知识

 这个方法返回一个数的自然对数(底数是E).如果数的值是负的,则返回值始终为NaN.语法 Math.log( x ) ; 下面是参数的详细信息:     x : 一个数字. 返回值: 返回一个数字的自然对数(底数为E). 例子: <html> <head> <title>JavaScript Math log() Method</title> </head> <body> <script type="text/java

在JavaScript中处理数组之reverse()方法的使用_基础知识

 JavaScript数组reverse()方法反转数组元素.第一个数组元素成为最后一个元素,最后一个元素成为第一个元素.语法 array.reverse(); 下面是参数的详细信息:     NA 返回值: 返回数组的反转单一值.例子: <html> <head> <title>JavaScript Array reverse Method</title> </head> <body> <script type="t

在Javascript中处理字符串之big()方法的使用_基础知识

 此方法创建一个用作超文本目标的HTML锚.语法 string.anchor( anchorname ) 下面是参数的详细信息:     anchorname: 定义了锚的名称 返回值:     返回其锚标记的字符串 例子: <html> <head> <title>JavaScript String anchor() Method</title> </head> <body> <script type="text/j

在JavaScript中处理字符串之link()方法的使用_基础知识

 此方法创建了请求另一个URL的HTML超文本链接.语法 string.link( hrefname ) 下面是参数的详细信息:     hrefname: 任何字符串指定HREF标记; 它应该是一个有效的URL 返回值:     返回字符串<a>标签 例子: <html> <head> <title>JavaScript String link() Method</title> </head> <body> <sc

在Javascript中处理数组之toSource()方法的使用_基础知识

 JavaScript数组 toSource()方法返回表示数组的源代码的字符串.这种方法是通过Mozilla来支持.语法 array.toSource(); 下面是参数的详细信息:     NA 返回值: 返回表示该数组的源代码的字符串.例子: <html> <head> <title>JavaScript Array toSource Method</title> </head> <body> <script type=&q

JavaScript中操作字符串之localeCompare()方法的使用_基础知识

 这个方法返回一个数字表示参考字符串是否到来之前或之后或相同的排序顺序给定的字符串.语法 string.localeCompare( param ) 下面是参数的详细信息:     param : 字符串对象进行比较的字符串 返回值:     0 : 字符串匹配100%     1 : 不匹配,参数值来自于语言环境的排序顺序字符串对象的值之前     -1 : 不匹配,参数值来自于语言环境的排序顺序字符串对象的值之后 例子: <html> <head> <title>J