[Java教程]eval()函数用法详解

0 2015-12-14 11:00:26

eval()函数用法详解:

此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval()函数的用法。

语法结构:eval(str)

此函数可以接受一个字符串str作为参数,并把此str当做一段javascript代码去执行,如果str执行结果是一个值则返回此值,否则返回undefined。如果参数不是一个字符串,则直接返回该参数,实例如下:eval("var a=1");//声明一个变量a并赋值1。eval("2+3");//执行加运算,并返回运算值。eval("mytest()");//执行mytest()函数。eval("{b:2}");//声明一个对象。

在以上代码特别注意的是,最后一个语句是声明了一个对象,如果想返回此对象,则需要在对象外面再嵌套一层小括号,如下:eval("({b:2})");

以上内容简单介绍了eval()函数的用法,比较容易理解。此函数最让人感到困惑的是关于它的作用域问题,下面就结合实例来介绍一下相关内容,先看一段代码实例:function a(){ eval("var x=1"); console.log(x); } a(); console.log(x);

在上面的代码中,第一个alert()函数能够弹出1,而第二个会因为x未定义而报错。

由以上表现可以得出,eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域。这在所有主流浏览器都是如此,但是有时候需要将eval()函数的作用域设置为全局,当然可以将eval()在全局作用域中使用,但是往往实际应用中,需要在局部作用域使用具有全局作用域的此函数,这个时候可以用window.eval()的方式实现,例如以上代码可以改造如下:function a(){ window.eval("var x=1"); console.log(x); } a(); console.log(x);

在上面的代码中,两个alert()语句都能够正常弹出1。但是此中方式在标准浏览器中是可以的,但是在IE8和IE8以下浏览器中的表现依然和eval()一样,作用域是它们所在的作用域。这个时候可以使用IE浏览器独有的window.execScript()解决IE8和IE8浏览器的问题。为了实现兼容所有主流浏览器,把代码改造如下:function a(){ if(window.execScript){ window.execScript("var x=1"); } else{ window.eval("var x=1"); } console.log(x); } a(); console.log(x);

如果浏览器支持window.execScript(),则使用此函数,不支持则使用window.eval(),这样就可以解决IE8和IE8以下浏览器的问题。

特别说明:上面所有代码建议复制到本地进行测试,可能在本编辑器内有误。

eval 函数 java_[Java教程]eval()函数用法详解相关推荐

  1. java调用javascript函数_[Java教程]JavaScript函数的4种调用方法详解

    [Java教程]JavaScript函数的4种调用方法详解 0 2016-08-09 00:00:12 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C# ...

  2. python中如何反解函数_PyTorch中反卷积的用法详解

    pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d(in_channels, out_channels, kernel_size, str ...

  3. Java语言Socket接口用法详解

    Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...

  4. java中String的用法详解

    在这里先分别对String.StringBuffer.StringBuilder进行解析,在比较三者异同 String String类:代表字符串.Java程序中所有的字符串字面值(如"fd ...

  5. Java动态数组的用法详解

    Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList.下面介绍一下ArrayL ...

  6. 【Python教程】 re 模块中findall() 函数返回值展现方式的用法详解

    findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...

  7. java中刷新js函数,js刷新页面location.reload()用法详解

    本文介绍了js刷新页面函数location.reload()的用法,有关js location.reload()函数的例子,有需要的朋友参考下. 在javascript编程中,多使用location. ...

  8. linux消息队列消息清空函数,ipcrm命令_Linux ipcrm 命令用法详解:删除消息队列、信号集、或者共享内存标识...

    ipcrm命令用来删除一个或更多的消息队列.信号量集或者共享内存标识. 语法ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q Messag ...

  9. java中synchronized的用法详解

    记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...

最新文章

  1. Docker核心技术之容器详解
  2. ZOJ 2770 Burn the Linked Camp 差分约束+SPFA
  3. C~K招亲_JAVA
  4. php or || 和 and
  5. 5、时间日期的处理:Java Date类、Calendar类详解
  6. linux -- supervitord怎么杀出主进程派生出来的子进程。
  7. java threadlocal 缺点_Java的ThreadLocal如何在后台实现?
  8. java程序怎么都不是一个_java运行的流程-怎么运行java程序编了一个程序不知道怎么运行郁闷啊后缀文件名是 爱问知识人...
  9. 使用hutool发送QQ邮件在windows正常,linux发送报错。
  10. [Java] 蓝桥杯ADV-185 算法提高 五次方数
  11. seo关键词互点软件报价_舟山seo关键词优化软件
  12. Linux网络编程 --------- Socket编程---最浅显易懂的介绍
  13. 盘点(腾讯字节谷歌等大厂)面试中常见的智力题
  14. Ethereum Swarm bzz 升级
  15. 系统监控+流量监控+抓包分析
  16. 微信小程序:二开版优化新紫色UI云开发新款壁纸小程序源码
  17. 自考计算机专业就业率,自考计算机专业就业前景和就业选择
  18. 少儿编程和机器人编程哪个更好一点
  19. 视频文件打不开怎么修复
  20. Java中四个访问修饰符public private protected 和默认(package-private)的用法详解

热门文章

  1. web端的shader效果九 three.js里shader实现较平静的水面
  2. 如何下载什刹海街道卫星地图高清版大图
  3. 软件工程之博客系统开发文档
  4. waf怎么读_技术分享:杂谈如何绕过WAF(Web应用防火墙)
  5. 购买阿里云服务器,先试试主机免费试用能抢到不...
  6. 升级sp3后出现:一个问题阻止windows正确检测此机器许可证--解决方案
  7. python CTP 更换前置机重连
  8. 魔兽地图编辑器插件YDWE的使用与基本设置2之空格、复制、粘贴、撤销、重做键
  9. VLfeat学习(1)——Covariant feature detectors(协变特征检测器)
  10. 什么叫多头,什么叫空头?