js的这种写法是什么意思?

lingyue1012 2012-08-07 12:02:45

(function(D, B, F) {
if (D.sdoLogger) return;
var E = {
jsName: "sdo_beacon.js",
defaultVer: 20111010,
getVersion: function() {
var _ = this.jsName,
$ = new RegExp(_ + "(\\?(.*))?$"),
D = B.getElementsByTagName("script");
for (var E = 0; E < D.length; E++) {
var C = D[E];
if (C.src && C.src.match($)) {
var A = C.src.match($)[2];
if (A && (/^[a-zA-Z0-9]+$/).test(A)) return A
}
}
return this.defaultVer
},
base64encode: function(_) {
var D = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
F, E, C, $, A, B;
return F
}
}
$.tracking();
D.sdoLogger = $
})(window, document)


这叫匿名类?那是怎么调用的呢?如果我想多了解一下这方面的知识,有什么书推荐?网络应该怎么搜?

还有一个问题随便也问了吧,关于jquery的问题。

$.ajax({
type : "GET",
cache : false,
url : url,
dataType : 'text',
success : function(data) { //问题的关键点,这个data数据居然可以直接传过来,是怎么实现的?
if(data == 1){

}
}
});


...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
joybee007 2012-08-07
  • 打赏
  • 举报
回复
这个是一个自运行匿名函数,主要是模仿块级作用域的。里面的代码会自动运行。下面的括号是传参进去的。
jQuery的那个data是在jQuery构造里面传进来的,这个需要看jQuery的API才知道他传了什么过来。
joybee007 2012-08-07
  • 打赏
  • 举报
回复
第一个括号里面放函数表达式,第二个括号执行;相当于
var abc=function(n){...};
abc(5);
只不过他省略了赋值这个操作,而直接把函数后面加个括号运行又有语法错误,所以用个括号把函数括起来,就成了你看见那样子。
lingyue1012 2012-08-07
  • 打赏
  • 举报
回复
额。。看了几篇文章明白了。代码如果这样写就容易明白多了

(function(arg){
alert(arg+100);
}(20));


文章链接,中文翻译:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html
英文原创(可能):http://benalman.com/news/2010/11/immediately-invoked-function-expression/
lingyue1012 2012-08-07
  • 打赏
  • 举报
回复
网上查了一些资料,其中有个地方举个这个例子:

(function(arg){
alert(arg+100);
})(20);


不明白的就是为什么200可以传到arg这个参数里??




lingyue1012 2012-08-07
  • 打赏
  • 举报
回复
哦。。谢谢啦。

87,907

社区成员

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

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