欢迎来到天天文库
浏览记录
ID:30779921
大小:68.50 KB
页数:5页
时间:2019-01-03
《javascript中eval和with用法实例总结_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、javascript中eval和with用法实例总结本文实例讲述了javascript中eval和with用法。分享给大家供大家参考,具体如下:我们都知道javascript的作用域机制,但是with和eval冇时会“破坏”我们对于作用域的常规理解。下面参考网上资源和自己理解总结一下eval和with的用法。一、eval1、eval函数:把一个字符串当作一个js表达式一•样去执彳亍它.2、语法:eval(strScript)注:参数strScript是必填项3、使用说明(1)它是有返回值的,如果参数字符串是一个表达式,就会返回表达式的值
2、。如果参数字符串不是表达式,没有值,那么返冋“undefined”。(2)参数字符串作为代码执行时,是和调用oval函数的上下文相关的,即其小出现的变量或函数调用必须在调用eval的上下文环境中可用。4、示例:function$(s){if(document.getElementByTd){returneval(Jdocument.gctElcmcntByld(,z,+s+'〃)');}else{rcturneval(Jdocument,all.J+s);}}//eval,这个比较常用varmyTest=function(){retur
3、n,zevaltest";};functionevalTest(){〃简单数据alert(eval("1+1"));//2alert(eval(〃‘a,+1"));//alalert(eval(〃l+‘a'“));//laalert(eval(^parselnt('a'+1)“));//NaNalert(eval(z,parselnt(1+'a)〃));//Ialert(eval(,ztruc,/));//truealert(eval("0二二false"));//truealert(eval(〃1二二undefinecT));//fa
4、lsealert(eval(,zisNaN(undefined)〃));//true〃函数和对象alert(eval(/zthisz,));//[object]alert(eval(z,typeof(this),z));//objectalert(eval(,ztypeof(test),z));//undefinedalert(eval(,/evalTest,/));//这个显示当前函数的定义语句细节,包含注释//alert(eval("evalTest()〃));//调用自己并执行,这个会有大问题啊!alert(eval(,ztypc
5、of(cvalTcst)z,));//function〃其他vartmpFunc=,z{a:1};alert(eval(tmpFunc));//Ialert(evalCC+tmpFunc+〃)〃));//[objectobject]alert(eval("tmpFunc"));//{a:1}//alert(evaltmpFunc()“));//脚本错误alert(myTest());eval("alert(myTest())“);//和上面等价alert(eval(myTest));alert(eval("myTest"));//和上面
6、等价//form里的一个input,id=txtUscrNamceval(〃$('txtUserName,).value二'jeffwong,;“);//等价于$(,txtUserName,).value=,jeffwong,;eval(,zalert($(,txtUserName,).value);〃);}cvalTcst();5、eval和作用域(1)经典代码分析a、常见varstr="global";functiontest(){alert(str);//undefinedvarstr="local";}test();alert(
7、str);//global分析:如我们预期的那样,得到指定值。test函数内的str没有var和有var声明,结果也是不一样的,读者可口行验证。b、eval替代直接声明变量的写法varstr="global";functiontest(){alert(str);//??eval(〃varstr二'local';〃);〃会像我们预期的那样吗?//varstr="loceil";alert(str);//这里又是什么结果?}test();alert(str);//??分析:对比a屮的写法,我们只是在test函数里用eval语句替换直接声明v
8、ar定义变量那一句最后alert一下而已,结果岀入很大。(2)eval定义全局代码a、兼容ie和ff的通用定义全局代码的eval函数varnav=newObject();//通用eval函数nav.Eval
此文档下载收益归作者所有