定义和用法

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

语法

eval_r(string)

参数

描述

string

必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

返回值

通过计算 string 得到的值(如果有的话)。

说明

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

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

抛出

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

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

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

提示和注释

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

eg:

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

eval_r()函数
   
   JavaScript有许多小窍门来使编程更加容易。
   其中之一就是eval_r()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。
   举个小例子:
    //执行表达式
   var the_unevaled_answer = "2 + 3";
   var the_evaled_answer = eval_r("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_r("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="http://a.com/a.gif" name="parrot"]
   [img src="http://b.com/b.gif" name="cheese"]
   [code]
   请注意象这样的几行语句:
   [code]
   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_r(the_image_name);
   the_image_object.src = "ant.gif";
   }
   
   如果用户在提示框里填入"parrot",在第二行里创建了一个字符串即window.document.parrot. 然后包含了eval的第三
   行意思是: "给我对象window.document.parrot" - 也就是你要的那个图象对象。一旦你获取了这个图象对象,你可以把
   它的src属性设为ant.gif. 有点害怕?用不着。其实这相当有用,人们也经常使用它。
   我们常常在Javascript中间到Eval这个函数,
   有些人觉得这个函数很奇怪,可以把一些字符串变的功能很强大
   在我们需要将普通的字符串转变成具体的对象的时候,就会用到这个函数
   
   eval 函数对作为数字表达式的一个字符串进行求值,其语法为:
   
   eval_r(expr)
   
   此处 expr 是一个被求值的字符串参数。如果该字符串是一个表达式,eval 求该表达式的值;如果该参数代表一个或多个 JavaScript 语句,那么 eval 执行这些语句。eval 函数可以用来把一个日期从一种格式(总是字符串)转换为数值表达式或数字

JavaScript eval_r() 函数的更多相关文章

  1. JavaScript中函数函数的定义与变量的声明<基础知识一>

    1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...

  2. 理解 JavaScript 回调函数并使用

    JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...

  3. 5种 JavaScript 调用函数的方法

    一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...

  4. javascript escape()函数和unescape()函数

    javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...

  5. JavaScript调用函数的方法

    摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...

  6. Javascript常用方法函数收集(二)

    Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...

  7. javascript工具函数

    第一部分 JavaScript工具函数 转义特殊字符为html实体   HtmlEncode: function(str){ return str.replace(/&/g, '&') ...

  8. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  9. javascript篇-----函数作用域,函数作用域链和声明提前

    在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于 ...

随机推荐

  1. redux学习与使用

    Redux: 主要概念Action,reducer,store,state 原理:dispatch ({ type:action, preload: { val } } ) --->reduce ...

  2. jeecg中的原生态组件

    <!-- ztree --><link rel="stylesheet" type="text/css" href="plug-in ...

  3. PHP中header的用法总结

    来源 :http://blog.sina.com.cn/s/blog_7298f36f01011dxv.html header的用法 header()函数的作用是:发送一个原始 HTTP 标头[Htt ...

  4. 介绍了如何取成员函数的地址以及调用该地址:C++

    摘要:介绍了如何取成员函数的地址以及调用该地址. 关键字:C++成员函数 this指针 调用约定 一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一 ...

  5. python使用分治法找序列最大值

    最近上算法导论课,说道分治法,回来想用python写写程序练练手,于是模仿一通写了如下的代码: __author__ = 'day' def ArrayMaxMin(Array): return ma ...

  6. poj 3069 Saruman's Army(贪心)

    Saruman's Army Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Tot ...

  7. HUD 1175 连连看

    连连看 Time Limit : 20000/10000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submiss ...

  8. tensorflow定义神经网络损失函数MSE

    import numpy as np import tensorflow as tf y_pred = np.array([[1], [2], [3]],dtype=np.float32) y_rea ...

  9. 关于 百度 Ueditor (在chrome浏览器) 上传图片时 打开文件夹的延迟问题

    在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/image ...

  10. nms

    nms函数是保留选框中得分最高的那一个 Python代码如下 def nms(boxes, threshold, method): """ boxes: [x1, y1, ...