定义和用法

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. postman的Testing examples(常用方法)

    在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...

  2. 转:使用JMeter创建数据库(Mysql)测试

    我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/source/3451945 ...

  3. Dynamics CRM 2011 怎么根据记录的etc参数值找到实体英文名和根据etc参数值或英文名称找到其实体中文名称

    一.平常我们可以打开CRM2011一条已创建的记录,通过JScript方法获取实体英文名的方法是:按F12,输入contentIFrame.Xrm.Page.data.entity.getEntity ...

  4. IE 10 如何设置支持CRM4 正常浏览

    通过工具—> 选择兼容性视图 就可以了.具体如下图:

  5. 百度地图JavaScript如何清除指定类型的覆盖物

    由于一个地图中有很多种类型的覆盖物,由于某个覆盖物(一般是自定义)整个地图中只允许出现一次 那第一想到的就是,每次创建这个类型的覆盖物时先清除这一类型的覆盖物,比较简单判断覆盖物的类型 instanc ...

  6. 【jemter】HTTP请求参数化

    HTTP请求参数化:就是把URL的参数项做参数化处理 我们现在要对子猴博客来进行一番压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取. 1.  ...

  7. 胖子哥的大数据之路(四)- VisualHBase功能需求框架

    一.引言 大数据在结构化数据存储方面的应用需求越来越明确,但是大数据环境下辅助开发工具的不完善,给数据库管理人员和开发人员带来的不变难以言表,基于此创建了开源项目VisualHBase,同时创建了Vi ...

  8. 【转载】Keepalived安装使用详解

    转自:http://www.cnblogs.com/MacoLee/p/5853356.html 简介 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障, ...

  9. matplot 代码实例

    matplot 代码实例 #!/usr/bin/env python # coding=utf-8 import numpy as np import matplotlib.pyplot as plt ...

  10. Android RIL概述

    前言 Android作为一个通用的移动平台,其首要的功能就是通话.短信以及上网等通信功能.那么,从系统的角度来看,Android究竟是怎么实现与网络的交互的了? 这篇文章里,就来看一看Android中 ...