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 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
一些实用的jQuery代码片段收集
Jul 12 Javascript
Js控制弹窗实现在任意分辨率下居中显示
Aug 01 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
jquery实现鼠标滑过显示提示框的方法
Feb 05 Javascript
JS中type="button"和type="submit"的区别
Jul 04 Javascript
微信小程序获取手机号授权用户登录功能
Nov 09 Javascript
Vue.js 图标选择组件实践详解
Dec 03 Javascript
vue中的mescroll搜索运用及各种填坑处理
Oct 30 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
vue print.js打印支持Echarts图表操作
Nov 13 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
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
JavaScript数组排序功能简单实现
2020/05/14 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
python使用pil生成图片验证码的方法
2015/05/08 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
python3字符串操作总结
2019/07/24 Python
python字符串格式化方式解析
2019/10/19 Python
简单了解python元组tuple相关原理
2019/12/02 Python
python机器学习库xgboost的使用
2020/01/20 Python
python中pdb模块实例用法
2021/01/15 Python
python 获取计算机的网卡信息
2021/02/18 Python
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
与UNIX有关的几个名词
2015/09/17 面试题
护士求职推荐信范文
2013/11/23 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫