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 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
ExtJS 下拉多选框lovcombo
May 19 Javascript
基于jquery ajax 用户无刷新登录方法详解
Apr 28 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
javascript 动态修改css样式方法汇总(四种方法)
Aug 27 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
vue中实现滚动加载更多的示例
Nov 08 Javascript
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 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 FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
python ElementTree 基本读操作示例
2009/04/09 Python
Eclipse + Python 的安装与配置流程
2013/03/05 Python
简单学习Python time模块
2016/04/29 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
python安装教程
2018/02/28 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
python实现图片插入文字
2019/11/26 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
2014教师个人自我评价范文
2014/09/13 职场文书
高质量“欢迎词”
2019/04/03 职场文书