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 点击图片跳转上一张或下一张功能的实现代码
Mar 12 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
Nov 10 Javascript
js获取图片宽高的方法
Nov 25 Javascript
纯JavaScript代码实现文本比较工具
Feb 17 Javascript
JS实现的二叉树算法完整实例
Apr 06 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
javascript和php使用ajax通信传递JSON的实例
Aug 21 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 Javascript
Vue中点击active并第一个默认选中功能的实现
Feb 24 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 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
JQuery删除DOM节点的方法
2015/06/11 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
Angular2库初探
2017/03/01 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
JS随机密码生成算法
2019/09/23 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
Python中的rjust()方法使用详解
2015/05/19 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
周年庆典主持词
2014/04/02 职场文书
销售团队口号大全
2014/06/06 职场文书
超市创意活动方案
2014/08/15 职场文书
商场父亲节活动方案
2014/08/27 职场文书
军事博物馆观后感
2015/06/05 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS