微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript中eval()函数用法详解

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。

如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

语法

代码如下:

ottom: 0px; border-left: 0px; padding-bottom: 0px; widows: 1; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 4px 0px; padding-left: 0px; width: 729px; letter-spacing: normal; padding-right: 0px; border-collapse: collapse; font: 12px 'Open Sans','Helvetica Neue',Helvetica,Arial,STHeiti,'Microsoft Yahei',sans-serif; white-space: normal; color: rgb(51,51,51); border-top: 0px; border-right: 0px; word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"> ottom: 0px; border-left: 0px; padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px"> ottom: 0px; border-left: 0px; padding-bottom: 0px; background-color: rgb(246,244,240); margin: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px"> ottom: 0px; border-left: 0px; padding-bottom: 0px; background-color: rgb(255,255); margin: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px">
ottom: rgb(85,85,85) 1px solid; text-align: left; border-left: rgb(85,85) 1px solid; padding-bottom: 3px; background-color: rgb(85,85); margin: 0px; padding-left: 3px; padding-right: 3px; color: rgb(255,255); font-size: 12px; vertical-align: top; border-top: rgb(85,85) 1px solid; border-right: rgb(85,85) 1px solid; padding-top: 3px">参数 ottom: rgb(85,85) 1px solid; padding-top: 3px">描述 ottom: rgb(212,212,212) 1px solid; border-left: rgb(212,212) 1px solid; padding-bottom: 7px; margin: 0px; padding-left: 5px; padding-right: 5px; font-size: 1em; vertical-align: top; border-top: rgb(212,212) 1px solid; border-right: rgb(212,212) 1px solid; padding-top: 7px">stringottom: rgb(212,212) 1px solid; padding-top: 7px">必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

函数用法详解:

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

函数可以接受一个字符串str作为参数,并把此str当做一段javascript代码去执行,如果str执行结果是一个值则返回此值,否则返回undefined。如果参数不是一个字符串,则直接返回该参数,实例如下:

rush:js;"> eval("var a=1");//声明一个变量a并赋值1。 eval("2+3");//执行加运算,并返回运算值。 eval("mytest()");//执行mytest()函数。 eval("{b:2}");//声明一个对象。

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

代码如下:

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

rush:js;"> function a(){ eval("var x=1"); console.log(x); } a(); console.log(x);

在上面的代码中,第一个alert()函数能够弹出1,而第二个会因为x未定义而报错。 由以上表现可以得出,eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域。这在所有主流浏览器都是如此,但是有时候需要将eval()函数的作用域设置为全局,当然可以将eval()在全局作用域中使用,但是往往实际应用中,需要在局部作用域使用具有全局作用域的此函数,这个时候可以用window.eval()的方式实现,例如以上代码可以改造如下:

rush:js;"> function a(){ window.eval("var x=1"); console.log(x); } a(); console.log(x);

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

rush:js;"> 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以下浏览器的问题。

以上内容是小编给大家分享的JavaScript中eval()函数用法详解,希望大家喜欢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐