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 相关文章推荐
利用JQuery为搜索栏增加tag提示
Jun 22 Javascript
jquery实现每个数字上都带进度条的幻灯片
Feb 20 Javascript
innerText 使用示例
Jan 23 Javascript
jQuery中click事件的定义和用法
Dec 20 Javascript
jQuery使用animate创建动画用法实例
Aug 07 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
分享网页检测摇一摇实例代码
Jan 14 Javascript
js实现图片360度旋转
Jan 22 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 Javascript
Vue程序化的事件监听器(实例方案详解)
Jan 07 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 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颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python中的tuple元组详细介绍
2015/02/02 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
python日期相关操作实例小结
2019/06/24 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
入党自我评价范文
2014/02/02 职场文书
房地产营销策划方案
2014/02/08 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
应聘英语教师求职信
2014/04/24 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2016年学校招生广告语
2016/01/28 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python