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 相关文章推荐
复制小说文本时出现的随机乱码的去除方法
Sep 07 Javascript
jquery 元素相对定位代码
Oct 15 Javascript
菜鸟学习JavaScript小实验之函数引用
Nov 17 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
Jul 08 Javascript
js实现新浪微博首页效果
Oct 16 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
Oct 19 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
ES5 ES6中Array对象去除重复项的方法总结
Apr 27 Javascript
json数据传到前台并解析展示成列表的方法
Aug 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
深入PHP变量存储的详解
2013/06/13 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php fread读取文件注意事项
2016/09/24 PHP
php上传excel表格并获取数据
2017/04/27 PHP
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python求解平方根的方法
2015/03/11 Python
Python中几种操作字符串的方法的介绍
2015/04/09 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
中国合伙人观后感
2015/06/02 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
Python 如何实现文件自动去重
2021/06/02 Python
win10搭建配置ftp服务器的方法
2022/08/05 Servers