JavaScript中eval()函数用法详解

 更新时间:2015年12月14日 11:44:11   作者:程序员小菜  
eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行,本文给大家

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

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

语法

复制代码 代码如下:

eval(string)

参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

eval()函数用法详解:

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

此函数可以接受一个字符串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以下浏览器的问题。

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

相关文章

  • 配置Webpack SourceMap 实践教程

    配置Webpack SourceMap 实践教程

    这篇文章主要介绍了如何配置Webpack SourceMap,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • JS数组方法reduce的妙用分享

    JS数组方法reduce的妙用分享

    在 JavaScript 中,reduce 是最难理解的数组方法之一,它是一个强大而灵活的高阶函数,下面就来看看 reduce 的妙用之处,希望对大家有所帮助
    2023-02-02
  • js下划线和驼峰互相转换的实现(多种方法)

    js下划线和驼峰互相转换的实现(多种方法)

    本文主要介绍了js下划线和驼峰互相转换的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Js实现自定义右键行为

    Js实现自定义右键行为

    本文主要给大家分享的是一则javascript实现的自定义右键行为的小技巧,非常的简单实用,有相同需求的小伙伴可以参考下。
    2015-03-03
  • JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结

    JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结

    这篇文章主要介绍了JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作,结合实例形式整理总结了javascript运算符优先级,URL编码与解码,String,Math,arguments操作原理及使用技巧,需要的朋友可以参考下
    2019-06-06
  • Js 正则表达式知识汇总

    Js 正则表达式知识汇总

    本文对javascript中正则表达式进行了总结汇总,将知识点和注意点都理了一下,并附上2个练习题,这里分享给小伙伴
    2014-12-12
  • JavaScript制作游戏摇杆方向盘

    JavaScript制作游戏摇杆方向盘

    本文主要介绍了JavaScript制作游戏摇杆方向盘,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2014-04-04
  • layui自定义工具栏的方法

    layui自定义工具栏的方法

    今天小编就为大家分享一篇layui自定义工具栏的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JS控件ASP.NET的treeview控件全选或者取消(示例代码)

    JS控件ASP.NET的treeview控件全选或者取消(示例代码)

    本篇文章主要是对JS控件ASP.NET的treeview控件全选或者取消的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • 分享JavaScript 类型判断的几种方法

    分享JavaScript 类型判断的几种方法

    这篇文章主要介绍了分享JavaScript 类型判断的几种方法,文章围绕主题展开详细的内容介绍,具有一定的的参考价值,需要的小伙伴可以参考一下
    2022-05-05

最新评论