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 相关文章推荐
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
Vue父子之间值传递的实例教程
Jul 02 Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 Javascript
react中的DOM操作实现
Jun 30 Javascript
Vue h函数的使用详解
Feb 18 Vue.js
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编程开发“虚拟域名”系统
2006/10/09 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
使用python实现knn算法
2017/12/20 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
python学生管理系统的实现
2020/04/05 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
Python创建自己的加密货币的示例
2021/03/01 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
乐观大学生的自我评价
2014/01/10 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
结对共建协议书
2014/08/20 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
财务部岗位职责范本
2015/04/14 职场文书
烈士陵园观后感
2015/06/08 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
MySQL 计算连续登录天数
2022/05/11 MySQL