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 相关文章推荐
解javascript 混淆加密收藏
Jan 16 Javascript
javaScript中的this示例学习详解及工作原理
Jan 13 Javascript
node.js中的http.request方法使用说明
Dec 14 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
Vue代码分割懒加载的实现方法
Nov 23 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
JS插件clipboard.js实现一键复制粘贴功能
Dec 04 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
webpack3升级到webpack4遇到问题总结
Sep 30 Javascript
使用typescript改造koa开发框架的实现
Feb 04 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 mysql PDO 查询操作的实例详解
2017/09/23 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
HTML node相关的一些资料整理
2010/01/01 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
vue实现文件上传功能
2018/08/13 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
python使用psutil模块获取系统状态
2016/08/27 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python实现的购物车功能示例
2018/02/11 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
美国网上书店:Barnes & Noble
2018/08/15 全球购物
旅游网创业计划书
2014/01/31 职场文书
法律进机关实施方案
2014/03/12 职场文书
素质教育学习心得体会
2016/01/19 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers