匿名函数有什么作用,最近在看新浪xweibo的代码,里面有个actions.js文件,就是一个大的匿名函数,这有什么用?
另外我没有找到任何一个php里面用到了这个actions.js,没有地方添加这个文件的引用,那这个js是怎么起作用的?刚开始做web开发,很多地方不明白,请各位赐教。
另外我没有找到任何一个php里面用到了这个actions.js,没有地方添加这个文件的引用,那这个js是怎么起作用的?刚开始做web开发,很多地方不明白,请各位赐教。
有时候使用匿名函数避开变量名冲突,因为js是用函数划分变量作用域的,外面写个匿名函数,就可以使js变量不会跟全局变量冲突
* X weibo JavaScript Library v1.1
* http://x.weibo.com/
*
* Copyright 2010 SINA Inc.
* Date: 2010/10/28 21:22:06
*/
(function(X, $){
var FALSE = false, TRUE = true, R = X.request,
Box = X.ui.MsgBox,
getCfg = X.getCfg,
getWb = X.getWb,
doc = document,
getText = X.lang.getText;X.use('action')
/**
* @class Xwb.mod.GlobalActionFilter
* 全局动作拦截器
* @static
*/
/**
* @property authFilter
* 该拦截器检测登录用户是否具备执行当前动作的权限。<br/>
* 目前检测的权限有:
* <ul>
* <li>
登录权限
</li>
* </ul>
登录权限:如果当前action.na未设置为true,则提示要求用户登录。<br/>
登录类型由全局配置loginCfg属性指定。<br/>
登录类型:
* <ul>
* <li>仅使用新浪帐号直接登录</li>
* <li>仅使用原有站点帐号登录</li>
* <li>使用新浪帐号与原有站点帐号并存方式登录</li>
* </ul> */
// 增加全局action拦截器,
// 对于要求登录的action转至登录页面
.addFilter(function( e, act){
// 如果e:name未注册action或者action.na未设置为true
// 则操作前要求用户登录
}, TRUE)/**
* @class Xwb.mod.PageActions
* 公共action处理
* @static
*//**
* @event sd
* 发布微博弹框
* @param {String} [m] 弹出时微博框内容
*/
.reg('sd', function( e ){
})
/**
* @event fw
* 弹出微博转发框
* @param {String} w 微博ID
*/
.reg('fw', function( e ){
})/**
* @event fl
* 加关注
* @param {String} u 关注用户ID
* @param {Number} t 动作类型
* t值可为<br/>
* <ul>
* <li>1:用<span class="followed-btn">样式显示已关注;</li>
* <li>2:用<em>显示已关注</li>
* <li>其它为刷新当前页</li>
* </ul>
*/
.reg('fl', function( e ){
})/**
* @event ufl
* 取消关注
* @param {String} u 用户ID
* @param {Number} [f] 动作类型
* f值可为<br/>
* <ul>
* <li>1:显示“关注他”标签</li>
* <li>其它为刷新当前页</li>
* </ul>
*/
.reg('ufl', function(e) {
})/**
* @event rs
* 弹出举报对话框
* @param {String} w 微博ID
*/
.reg('rs', function(e){
})
/**
* @event blm
* 弹出屏蔽微博对话框
* @param {String} w 微博ID
*/
.reg('blm', function(e){
})//刷新页面
/**
* @event rl
* 刷新页面
*/
.reg('rl', function(){
location.reload();
}, {na: TRUE})// 收藏, favourite
/**
* @event fr
* 弹出收藏对话框
* @param {String} w 微博ID
*/
.reg('fr', function( e ){
})/**
* @event fr
* 弹出取消收藏对话框
* @param {String} w 微博ID
* @param {Number} t 为1时当请求成功后将微博从列表移除,否则显示“收藏”按钮
*/
.reg('ufr', function(e) {
})/**
* @event cm
* 评论微博
* @param {String} w
*/
.reg('cm', function( e ){
})// trun left 向左转
.reg('tl', function(e) {
}, {na:TRUE})// trun right 向右转
.reg('tr', function(e) {
}, {na:TRUE})//还原原来的缩略图片
.reg('zo', function(e) {
}, {na:TRUE})// zoom in 放大图片
.reg('zi', function( e ) {
}, {na:TRUE})// play video 播放视频
.reg('pv', function(e) {
}, {na:TRUE})//close video
.reg('cv', function(e) {
}, {na:TRUE})/**
* @event dl
* 弹出删除我发布的微博对话框
* @param {String} w 微博ID
*/
.reg('dl', function( e ){
})//关闭活动
.reg('clsevt', function(e){
})
//删除活动
.reg('delevt', function(e){
})/**
* @event mop
* TA的微博、粉丝页 “更多”按键
*/
.reg('mop', function(e) {
})/**
* @event sdm
* 发私信
* @param {String} [c] 内容
* @param {String} [n] 昵称
*/
.reg('sdm', function( e ){
})/**
* @event rm
* 回复私信
* @param {String} [u] 用户ID
* @param {String} [n] 昵称
*/
.reg('rm', function( e ){
})/**
* @event dm
* 删除私信
* @param {String} m 私信ID
*/
.reg('dm', function(e){
})/**
* @event dm
* 删除指定用户的私信
* @param {String} u 用户ID
*/
.reg('dum', function(e){
})/**
* @event dbl
* 删除黑名单
* @param {String} u 用户ID
*/
.reg('dbl', function(e) {
})
/**
* @event dfan
* 移除粉丝
* @param {String} u 用户ID
*/
.reg('dfan', function(e){
})
//关注话题
.reg('addSubject',function(e){
})
//删除关注话题
.reg('delSubject',function(e){
});})(Xwb, $);
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</script>
</head>
<body>
<script type="text/javascript">
(function(){
document.write("Hello World!");
})();
</script>
</body>
</html>
js文件是必须要先引入才能使用的,没有在页面上显示的引入,也可以用js动态引入的,典型的工具是require.js或steal.js,有兴趣的可以google。。