这段代码有些地方看不懂,请教一下

ZINI1900 2011-10-19 10:11:09
<script> (function(d){
var i=function(b,a,c){var e=new Date,f,a=a||30,c=c||"/";e.setTime(e.getTime()+a*864E5);a="; expires="+e.toGMTString();for(f in b)d.cookie=f+"="+b[f]+a+"; path="+c},


j=function(b){b+="=";var a,c,e,f=d.cookie.split(";");for(c=0,e=f.length;c<e;c++)if(a=f[c].replace(/^\s+|\s+$/g,""),a.indexOf(b)==0)return a.substring(b.length,a.length).replace(/\"/g,"");return null},
h=d.write,k={"douban.com":1,"douban.fm":1,"google.com":1,"googleapis.com":1,"gmaptiles.co.kr":1,"gstatic.com":1,"google-analytics.com":1, "googleadservices.com":1},


l=function(b,a){var c=new Image;c.onload=function(){};c.src="http://www.douban.com/j/except_report?kind=ra022&reason="+encodeURIComponent(b)+"&environment="+encodeURIComponent(a)},


g=function(b){try{h.call(d,b)}catch(a){h(b)}},

m=/<script.*?src\=["']?([^"'\s>]+)/ig,n=/http:\/\/(.+?)\.([^\/]+).+/i;

d.writeln=d.write=function(b){var a=m.exec(b),c;a?(c=n.exec(a[1]))?k[c[2]]?g(b):j("hj")!=="tqs"&&(l(a[1],location.href),i({hj:"tqs"},1),setTimeout(function(){location.replace(location.href)}, 50)):g(b):g(b)}})(document); </script>



第四段中的encodeURIComponent(b)和encodeURIComponent(a)是什么意思,第五段中的m和n两个正则表达式是什么意思,第六段中的问号和冒号是什么意思,小第是初学者,请大虾们指教.
...全文
131 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZINI1900 2011-10-20
  • 打赏
  • 举报
回复
能不能解释得清楚一点这个三目运算是怎么工作的
XC2010_K 2011-10-20
  • 打赏
  • 举报
回复
虽然不知道LZ研究豆瓣压缩过的JS代码干嘛。
1:encodeURIComponent(str)方法可以传递一个URI或URI的一部分,URI就是统一资源标示符,你把它看成一个网址就好,网址前面的协议不要忽略掉,如http,ftp。这个方法会把传进来的参数进行编码,但不会对英文字母及数字进行编码,基本上就是对:/ :;/?:@&=+$,# 等非ASCII字符按16进制编码.如:encodeURIComponent("http://www.csdn.net"),结果为encodeURIComponent("http://www.csdn.net"),你自己用document.write()试一下.
2:你自己GOOGLE一下,正则表达式,里面都有,但要注意的是后面的代码中的exec(str),它是正则表达式对象的方法,返回的是str与正则对象匹配的数组。
3:我不确定那是不是三目运算符,如果是的话。test?go1:go2
test是返回值为boolean的条件语句,go1或go2可以为值也可以为语句。如果test的返回值为true,执行冒号前面的,反之,后面的。
_懒猫 2011-10-20
  • 打赏
  • 举报
回复
学习了
_懒猫 2011-10-20
  • 打赏
  • 举报
回复
学习了
_懒猫 2011-10-20
  • 打赏
  • 举报
回复
学习了
liangws 2011-10-20
  • 打赏
  • 举报
回复
三元运算
var a = true;

var b = a ? "123" : "321";

"?" 是判断前面的语句是true还是false,如果是true就取 ":" 前面的,如果是false就取后面
ZINI1900 2011-10-20
  • 打赏
  • 举报
回复
那这段代码的功能是什么呢
001007009 2011-10-19
  • 打赏
  • 举报
回复
encodeURIComponent(b)和encodeURIComponent(a)
将字符串转码

m 匹配 <script ...
n 匹配 http//....

问号和冒号 是 三元运算符
greymouseyu 2011-10-19
  • 打赏
  • 举报
回复
把字符串作为 URI 组件进行编码

escape()、encodeURI()、encodeURIComponent()区别:
escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧