`
qinya06
  • 浏览: 583126 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

动态语句 eval

    博客分类:
  • html
 
阅读更多
<div class="quote_title"> 写道</div>
<div class="quote_div">var Jason="{name:'jason.zhao'}";<br><br>
eval("var oName="+Jason);<br><br>
alert(oName.name);//输出"jason.zhao"</div>
 
<p>1.使用eval()可以将jason格式字符串转化为js 对象,</p>
<p>---------------------------------------------------------------------------------------------------------------------------------</p>
<div class="quote_title"> 写道</div>
<div class="quote_div">var iNum=eval("5+2");<br>
alert(iNum);//输出“7”</div>
 
<p>2.使用eval()可以计算某个字符串</p>
<p>--------------------------------------------------------------------------------------------------------------------------------</p>
<p>转:</p>
<p>今天又碰到一件郁闷的事,让一个小小的eval给绊倒了.究竟是怎么回事呢?请听我详解.</p>
<p>今天做项目,有一个网页在ie下正常工作,但在火狐下,他居然不运行.我仔细检查了一下网页上的javascript,也没发现什么不兼容的地方.不
得已,我祭出了法宝级的工具--fireBug.在FireBug中,我设置了断点,按F10单步调试,单只见走到一半,网页闪了一下,便结束了.郁闷.
仔细观察了一下代码,发现在此地方,fireBug停下:  var
Size_List=eval("Form1.Size_List_"+suit_array_s[0].trim())......
我想难不成firefox不支持根据name取值,于是我做了一个实验,实验html内容如下:</p>
<pre name="code" class="html">&lt;head&gt;
&lt;script type="text/javascript"&gt;
function test()
{
  alert(form1.txt1.value);
}
&lt;/script&gt;
&lt;/head&gt;
&lt;form name=form1 action="" onSubmit="test();" method=post&gt;
&lt;input type="text" name="txt1"&gt;
&lt;input type="submit" value=提交&gt;
&lt;/form&gt;</pre>
 
<p>但是测试发现,在ie和firefox中都很正常,郁闷啊.究竟哪里出错?难道是eval,

我又改之为 alert(eval("form1.txt1.value")),
仍然正常...................无限郁闷中.........</p>
<p>最后我使出我最...厉害的杀手锏,在脚本中添加如下代码:</p>
<p>window.onerror=reportError;<br>
function reportError(msg,url,line) {<br>
      var str = "You have found an error as below: \n\n";<br>
      str += "Err: " + msg + " on line: " + line;<br>
     alert(str);<br>
     return true;<br>
}</p>
<pre name="code" class="html">window.onerror=reportError;
function reportError(msg,url,line) {
      var str = "You have found an error as below: \n\n";
      str += "Err: " + msg + " on line: " + line;
     alert(str);
     return true;
}</pre>
 
<p>错误终于显出原形:<img src="http://images.cnblogs.com/cnblogs_com/yuanshangcao/ERROR.JPG" border="0" alt="" width="350" height="129">
 </p>
<p>Form1未定义?不可能.网页中有一个form,name和id都是Form1.怎能没定义?!将测试html改为</p>
<pre name="code" class="html">&lt;head&gt;
&lt;script type="text/javascript"&gt;
function test()
{
  alert("form1.txt"+1+".value");
}
&lt;/script&gt;
&lt;/head&gt;
&lt;form name=form1 action="" onSubmit="test();" method=post&gt;
&lt;input type="text" name="txt1"&gt;
&lt;input type="submit" value=提交&gt;
&lt;/form&gt;</pre>
 
<p>之后,再在ff中试一下,出错.终于发现错误的原因,firefox下,如果写成""+变量,再用eval后,ff无法正确执行,在ie中正常,郁闷,有没有解决方法呢?有!</p>
<p>改之为</p>
<pre name="code" class="html">&lt;head&gt;
&lt;script type="text/javascript"&gt;
function test()
{
  alert("document.form1.txt"+1+".value");
}
&lt;/script&gt;
&lt;/head&gt;
&lt;form name=form1 action="" onSubmit="test();" method=post&gt;
&lt;input type="text" name="txt1"&gt;
&lt;input type="submit" value=提交&gt;
&lt;/form&gt;</pre>
<p> 在form1前面,加一个"document.",再测试,正常,问题解决..............郁闷,为什么"form1.XX"可以,为什
么"form1."+变量不行,而"document.form1."+变量又可以..........真让人糊涂啊,这javascript,这
firefox...........</p>
<p> </p>

--------------------
呵呵,看看这篇文章,你就明白了。

(1)对于IE浏览器,默认已经提供了这样的函数:execScript,用于在全局空间执行代码,只是知道的人还不多。
(2)对于Firefox浏览器,直接调用eval函数,则在调用者的空间执行;如果调用 window.eval则在全局空间执行。
这个知道的人估计就更少了。毕竟alert(eval==window.eval)返回true!
分享到:
评论

相关推荐

    在java中利用动态编译实现eval

    我们知道,在很多脚本语言中都有eval函数,它可以把字符串转换为表达式并执行.如在javaScript中: var str = aid.value + ".... 这样这个字符串就变成了表达式或语句开始执行.这样的功能对于动态构造变量是有非常重要

    2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf

    2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数EXECUTEGLOBAL 语句使用说明.pdf2020年EVAL 函数...

    Z.Expressions.Eval.rar

    公式操作、表达式动态语句,可以考虑使用 Eval Expression。 本文件给你无限使用的特权,基于netstand2.1制作,可以方便的用于netcore 3.1和net5中 需要下列包 ...

    Eval 函数 | Execute 语句 | ExecuteGlobal 语句使用说明

    Eval 函数 计算一个表达式的值并返回结果。  [result = ]Eval&#40;expression&#41; 参数 result 可选项。 是一个变量,用于接受返回的结果。...Eval 方法总是采用第二种解释,而 Execute 语句总是采用第一种

    JavaScript学习小结之被嫌弃的eval函数和with语句实例详解

    函数和with语句 eval 定义  eval&#40;&#41;是一个全局函数,javascript通过eval&#40;&#41;来解释运行由javascript源代码组成的字符串 var result = eval&#40;'3+2'&#41;; console.log(result,typeof result);//...

    eval32 v3.2.6 Beta R1 ShellEval 数学表达式 动态解释计算 扩展函数库

    利用本工具你甚至可以只用四条语句即可编制一个迷你版的MatLab 软件。 如下: #include “eval32.h” int main(int argc, char* argv[]) { tsInitialize(NULL,NULL,NULL); atexit((void (*)())(tsTerminate)); ...

    JS中的eval 为什么加括号

    eval简介 —eval在ECMA定义中是全局对象原型的方法; —eval接受的参数是字符串格式的js代码, 将由执行引擎(记得...执行表达式语句 eval&#40;(+javascript类型+&#41;);转为javascript对象 */ var jsonObj={name:ljl,d

    javascript中eval函数用法分析

    本文实例分析了javascript中eval函数用法。分享给大家供大家参考。具体分析如下: eval&#40;&#41;只有一个参数,如果传入的参数不是字符串,则直接返回这个参数。否则会将字符串当成js代码进行编译,如果编译失败则...

    eval用途

    eval的使用场合是什么呢?有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了

    js中eval详解

    eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会...

    js eval函数使用,js对象和字符串互转实例

    如果参数是Javascript语句,eval&#40;&#41;将执行 Javascript 语句。 语法 eval&#40;string&#41; 参数 描述 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 &lt;!...

    JavaScript中eval&#40;&#41;函数用法详解

    如果参数是Javascript语句,eval&#40;&#41;将执行 Javascript 语句。 语法 复制代码 代码如下: eval&#40;string&#41; 参数 描述 string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的...

    php eval函数用法总结

    eval定义和用法 eval&#40;&#41; 函数把字符串按照 PHP 代码来计算。 该字符串必须是合法的 PHP 代码,且必须以分号结尾。 如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval&#...

    js使用eval解析json(js中使用json)

    先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明...

    深入认识javascript中的eval函数

    1)介绍javascript中的eval函数的用法 (2)如何在函数内执行全局代码 ►先来说eval的用法,内容比较简单,熟悉的可以跳过。 eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行...

    ASP Eval、Execute、ExecuteGlobal区别分析

    语法:[result = ]eval_r(expression_r) expression_r 为任意有效 VBScript 表达式的字符串 示例: 代码如下: response.Write(eval_r(“3+2”)) ‘输出 5 “3+2” 使用引号括起来,表示是一个字符串,但是在 Eval ...

    Javascript中eval函数的使用方法与示例

    要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 返回值 通过计算 string 得到的值(如果有的话)。 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作...

    javascript eval和JSON之间的联系

    eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。 举例说明 eval...

    JavaScript eval&#40;&#41;函数定义及使用方法详解

    定义和用法 eval&#40;&#41; 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 语法 eval&#40;string&#41;...通过计算 string 得到的值(如果有的话)。...如果参数中没有合法的表达式和语句,则抛出 SyntaxEr

Global site tag (gtag.js) - Google Analytics