当前位置: 首页 > news >正文

鞍山市网站建设_网站建设公司_营销型网站_seo优化

全网最低价业务网站,湖南茶叶网站建设,用dede做网站去掉版权,人社局网站建设方案eval() 功能#xff1a;首先解释Javascript代码 然后执行它 用法#xff1a;Eval#xff08;codeString#xff09; codeString是包含有javascript语句的字符串#xff0c;在eval之后使用Javascript引擎编译。即#xff1a;eval函数可以把一个字符串当作一个javascript表… eval() 功能首先解释Javascript代码  然后执行它 用法EvalcodeString codeString是包含有javascript语句的字符串在eval之后使用Javascript引擎编译。即eval函数可以把一个字符串当作一个javascript表达式一样去执行它。 eval可以将字符串生成语句执行和SQL的exec()类似。 使用场合预先不知道要执行什么语句只有当条件和参数给时才知道执行什么语句这时候evaluate就派上用场了。 eg1   var theEval123;   var theresulteval(23);   alert(the Eval1 result is:theEval1and the result is:theresult); 如果运行程序看到结果字符串“23”被执行了。得到结果5. 例子eval(id  _icon.src/imgs/collapse_up.gif);            id是之前设定的参数而在双引号中的字符串则是需要编译的            引用:            --------------------------------------------------------------------------------            function tophide(id)     //id indicates menu            {                 if (top.topframeset.rows  31,*)                 {                     top.topframeset.rows  86,*;                     eval(id  _icon.src/imgs/collapse_up.gif);                     eval(id  _icon.altCollapse The Head);                     head.style.display  block                     }                 else                 {                     top.topframeset.rows  31,*;                     eval(id  _icon.src/imgs/collapse_down.gif);                     eval(id  _icon.altExpand The Head);                     head.style.display  none                 }             }            如果还是不明白深入认识javascript中的eval函数                      发现为本文起一个合适的标题还不是那么容易呵呵所以在此先说明下本文的两个目的            1介绍javascript中的eval函数的用法            2如何在函数内执行全局代码           先来说eval的用法内容比较简单熟悉的可以跳过。            eval函数接收一个参数s如果s不是字符串则直接返回s。否则执行s语句。如果s语句执行结果是一个值则返回此值否则返回undefined。            需要特别注意的是对象声明语法“{}”并不能返回一个值需要用括号括起来才会返回值简单示例如下            var code1a  2;    //表达式            var code2{a:2};      //语句            alert(eval(code1));     //-a2            alert(eval(code2));     //-undefined            alert(eval((  code2  )));    //-[object Object]            可以看到对于对象声明语句来说仅仅是执行并不能返回值。为了返回常用的“{}”这样的对象声明语句必须用括号括住以将其转换为表达式才能返回其值。这也是使用JSON来进行Ajax开发的基本原理之一。在例子中可以清楚的看到第二个alert语句输出的是undefined而第三个加了括号后输出的是语句表示的对象。      现在来说本文的重点如何在函数内执行全局代码。为了说明这个问题先看一个例子            var sglobal;    //定义一个全局变量            function demo1(){                eval(var slocal);            }            demo1();            alert(s);    //-global            很好理解上面的demo1函数等价于function demo1(){var slocal;}其中定义了一个局部变量s。            所以最后的输出是global并不是什么奇怪的事情毕竟大家都能很清楚的区分局部变量和全局变量。            仔细体会一下可以发现eval函数的特点它总是在调用它的上下文变量空间也称为包closure内执行无论是变量定义还是函数定义都是如此所以如下的代码会产生函数未定义的错误            var sfunction test(){return 1;};     //一个函数定义语句            function demo2(){                eval(s);            }            demo2();            alert(test());    //-error:test is not defined            这是因为test函数在局部空间定义demo2函数内可以访问到外面就访问不到了。            而在实际的Ajax开发中有时我们需要从服务器动态获取代码来执行以减轻一次载入代码过多的问题或者是一些代码是通过Javascript自身生成的希望用eval函数来使其执行。            但这样的动态获取代码的工作一般在函数内完成比如            function loadCode(){                var codegetCode();                eval(code);            }            可见eval不可能在全局空间内执行这就给开发带来了不少问题也看到过很多人为此郁闷。            不过现在偶终于找到了解决办法嘿嘿可以同时兼容IE和Firefox方法如下            var X2{}    //my namespace:)            X2.Evalfunction(code){            if(!!(window.attachEvent  !window.opera)){              //ie              execScript(code);             }else{              //not ie              window.eval(code);            }            }            现在如果要想在函数内定义全局代码就可以通过调用X2.Eval(code)方法一个例子如下            var sglobal;            function demo3(){            X2.Eval(var slocal);            }            demo3();            alert(s); //-local            可见在demo3函数内重新定义了全局变量slocal。            需要注意的是X2.Eval并不返回值如果要进行表达式的求值还是用系统的eval函数。X2.Eval设计为仅做全局代码定义用。            其实看到这里或许有人感觉问题也太容易解决了点呵呵但发现这个办法倒是需要些运气和技巧的            1对于IE浏览器默认已经提供了这样的函数execScript用于在全局空间执行代码只是知道的人还不多。            2对于Firefox浏览器直接调用eval函数则在调用者的空间执行如果调用window.eval则在全局空间执行。这个知道的人估计就更少了。毕竟alert(evalwindow.eval)返回true            Firefox的eval函数的特点的确是很令人奇怪的但从javascript规范中倒也能找到其来源            If value of the eval property is used in any way other than a direct             call (that is, other than by the explicit use of its            name as an Identifier which is the MemberExpression in a             CallExpression), or if the eval property is assigned to,            an EvalError exception may be thrown.            意思大概就是说eval函数的执行是和调用者相关的但并没有说其执行上下文的问题。所以IE和Firefox孰是孰非也就很难说了大家知道解决办法就好   转载于:https://www.cnblogs.com/bianyuanzhe/p/5969837.html
http://www.ihoyoo.com/news/78356.html

相关文章:

  • 宝塔建站详细教程网页设计尺寸的分辨率
  • 陕西网站建设方案优化房地产市场调研报告
  • 炫酷做网站背景图二级建造师证件查询全国联网
  • 怎么做进入网站js特效南宁网站建设怎么样
  • 毕设 做网站网站管理难做吗
  • 外发加工是否有专门的网站丫个网站建设
  • 武大网站建设wordpress密码错误
  • 网站包括哪些内容吗长沙简单的网站建设公司
  • php做的网站处理速度怎么样全球有多少亿人口
  • 建设电瓶车官方网站国内专门做旅游攻略的网站
  • 做seo网站空间网站设计一般包括哪几个部分
  • 虚拟主机多网站做英文版网站
  • 深圳优化网站排名软件怎样找到专业做网站人
  • 四川林峰脉建设工程有限公司网站电脑培训学校能学什么
  • 网站 整体架构海外网站代理
  • 网站开发留言板wordpress 伪静态 .htaccess
  • 哈尔滨模板建站推荐网站关键词全国各地的排名情况
  • 榆林免费做网站重庆在线高校开放平台
  • 十大软件免费下载网站排行榜企业微信官网
  • 国外的设计网站app农村小伙创业做网站
  • 沧州网站设计母了猜猜看游戏做网站
  • 网站还在建设中英文电子简历手机版
  • 免费合同模板网站技术外包网站
  • 手机上有那种网站吗创建网站是怎么赚钱的
  • 网站 数据备份wordpress category 参数
  • 个人网站备案名称例子湖南网红网站建设有限公司
  • dede网站404怎么做沭阳苏奥产业园做网站
  • 网球排名即时最新排名seo怎么优化方案
  • 做网站教程免费广州网站改版设计
  • 医院建设官方网站必要性网站运营可以转行做网站设计吗