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 相关文章推荐
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
jQuery学习笔记之Helloworld
Dec 22 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
js Object2String方便查看js对象内容
Nov 24 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
详解jquery选择器的原理
Aug 01 jQuery
基于jQuery的表单填充实例
Aug 22 jQuery
vue中实现上传文件给后台实例详解
Aug 22 Javascript
Vue触发input选取文件点击事件操作
Aug 07 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
Aug 10 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编程效率的53个要点(经验小结)
2010/09/04 PHP
php5.3 注意事项说明
2013/07/01 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
使用Apache的rewrite
2021/03/09 Servers
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
python中defaultdict的用法详解
2017/06/07 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
python -v 报错问题的解决方法
2020/09/15 Python
Python解析微信dat文件的方法
2020/11/30 Python
Python 实现集合Set的示例
2020/12/21 Python
大一自我鉴定范文
2013/10/04 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
新农村建设标语
2014/06/24 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
学习保证书怎么写
2015/02/26 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
资料员岗位职责范本
2015/04/13 职场文书
警示教育片观后感
2015/06/17 职场文书