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 GUID生成器实现代码
Oct 31 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
from 表单提交返回值用post或者是get方法实现
Aug 21 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
Javascript限制网页只能在微信内置浏览器中访问
Nov 09 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
JS实现CheckBox复选框全选全不选功能
May 06 Javascript
整理一下常见的IE错误
Nov 18 Javascript
javascript数组去重方法分析
Dec 15 Javascript
详解使用React进行组件库开发
Feb 06 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
一个程序下载的管理程序(二)
2006/10/09 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
python中管道用法入门实例
2015/06/04 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
pycharm远程调试openstack代码
2017/11/21 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Python对切片命名的实现方法
2018/10/16 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
Python的pygame安装教程详解
2020/02/10 Python
Python的历史与优缺点整理
2020/05/26 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
SQL中where和having的区别
2012/06/17 面试题
给老婆大人的检讨书
2014/02/24 职场文书
储备店长岗位职责
2015/04/14 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
2015年财务经理工作总结
2015/05/13 职场文书