JavaScript中eval()函数用法详解


Posted in Javascript onDecember 14, 2015

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()函数用法详解,希望大家喜欢。

Javascript 相关文章推荐
window.open()弹出居中的窗口
Feb 01 Javascript
jquery控制listbox中项的移动并排序的实现代码
Sep 28 Javascript
JQuery入门——事件切换之hover()方法应用介绍
Feb 05 Javascript
jquery 表格的增行删行实现思路
Mar 21 Javascript
js实现YouKu的漂亮搜索框效果
Aug 19 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
Dec 17 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
vue父组件点击触发子组件事件的实例讲解
Feb 08 Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
微信小程序自定义轮播图
Nov 04 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 #Javascript
JavaScript实现点击按钮就复制当前网址
Dec 14 #Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 #Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
Dec 14 #Javascript
基于JavaScript实现一定时间后去执行一个函数
Dec 14 #Javascript
javascript中new关键字详解
Dec 14 #Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 #Javascript
You might like
PHP实现加强版加密解密类实例
2015/07/29 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
DHTML Slide Show script图片轮换
2008/03/03 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
详解js类型判断
2018/05/22 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
简单了解python的一些位运算技巧
2019/07/13 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
土木工程专业大学毕业生求职信
2013/10/13 职场文书
应届毕业生就业自荐信
2013/10/26 职场文书
英语感恩演讲稿
2014/01/14 职场文书
公开服务承诺制度
2014/03/26 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
相亲活动方案
2014/08/26 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
详解MySQL中的pid与socket
2021/06/15 MySQL