定义和用法

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. 安卓秘钥生成命令以及SHA1值获取办法

    切换到秘钥所在目录,例如:cd C:\Program Files\Java\jdk1.8.0_171\bin 执行命令:keytool -genkey -alias demo.keystore -ke ...

  2. BEGIN-2_蓝桥杯_序列求和

    问题描述 求1+++...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+++...+n的值. 样例输入 样例输出 样例输入 说明:有一些试题会给出多组样例输入输 ...

  3. POJ 1182 食物链(并查集的使用)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 81915   Accepted: 24462 Description ...

  4. 1076 Forwards on Weibo (30 分)

    1076 Forwards on Weibo (30 分) Weibo is known as the Chinese version of Twitter. One user on Weibo ma ...

  5. [UE4]为什么会有类型检查

    类型检查 定义:对象的行为是否符合类型的行为 作用:帮助开发者找出潜在的错误. 类型转换 隐式类型转换:整数可以和浮点数运算 显式类型转换/强制类型转换

  6. [UE4]事件代理,无输出参数,蓝图中不需要绑定

    .h UFUNCTION(BlueprintImplementableEvent, meta=(DisplayName = "LoginSuccess")) void LoginS ...

  7. 超链接中 utm_source, utm_medium 等参数的含义是什么?

    作者:张溪梦 Simon链接:https://www.zhihu.com/question/48724061/answer/122730629来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  8. Python 常用PEP8规范

    目录 目录 代码布局 缩进 最大行宽 空行 模块导入 字符串 表达式和语句中的空格 注释 命名规则 编程建议 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPL ...

  9. sklearn-MultinomialNB朴素贝叶斯分类器

    原型 class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None) 参数 Parameter ...

  10. eventql部署过程

    1. 环境准备install cmake make automake autoconf zlib-devel libtoolyum install zlib-devel---------------- ...