易截截图软件、单文件、免安装、纯绿色、仅160KB

深入认识javascript中的eval函数

深入认识javascript中的eval函数
分类:技术专区时间:2007-5-21 15:04:58作者:supNate  
         发现为本文起一个合适的标题还不是那么容易,呵呵,所以在此先说明下本文的两个目的:
(1)介绍javascript中的eval函数的用法
(2)如何在函数内执行全局代码
►先来说eval的用法,内容比较简单,熟悉的可以跳过。
eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。
需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下:
var code1='"a" + 2';    //表达式
var code2='{a:2}';      //语句
alert(eval(code1));     //->'a2'
alert(eval(code2));     //->undefined
alert(eval('(' + code2 + ')'));    //->[object Object]
        可以看到,对于对象声明语句来说,仅仅是执行,并不能返回值。为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。这也是使用JSON来进行Ajax开发的基本原理之一。在例子中可以清楚的看到,第二个alert语句输出的是undefined,而第三个加了括号后输出的是语句表示的对象。
            ►现在来说本文的重点,如何在函数内执行全局代码。为了说明这个问题,先看一个例子:
var s='global';    //定义一个全局变量
function demo1(){
    eval('var s="local"');
}
demo1();
alert(s);    //->global
         很好理解,上面的demo1函数等价于:function demo1(){var s='local';},其中定义了一个局部变量s。
        所以最后的输出是global并不是什么奇怪的事情,毕竟大家都能很清楚的区分局部变量和全局变量。
        仔细体会一下,可以发现ev


相关文档:

javascript,js获得客户端计算机IP或名称方法

1、rcbdyctl
view plaincopy to clipboardprint?
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html;   
charset=gb2312">  
<title>JS获取客户端IP</title>  
</head>  
<b ......

Javascript 字符串 substring 与 substr 区别

stringObject.substring(start,end);
函数方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串.
start     必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置.
stop     可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject ......

一个CSS+JavaScript编写的跑马灯程序

转自:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片跑马灯</title>
</head>
<body>
<div style="overflow:hidden; width:350px" id='div'>
<!-- 这里是第一个关键点,o ......

javascript 的perl类型的正则表达式

(1)var recat = new RegExp("cat");    //简单定义。
        var recat = new RegExp("cat","gi");//g->global,i->case insensitive.
        var recat = /cat/gi;                       ......

javascript操作复选框函数

javascript操作复选框函数
function CheckAll(form) {//全选
for (var i=0;i    var e = form.elements[i];
    if (e.name != 'chkall')
       e.checked = form.chkall.checked;
   }
}
function checkSelect()//判断是否有选 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号