热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js中匿名函数的问题

匿名函数有什么作用,最近在看新浪xweibo的代码,里面有个actions.js文件,就是一个大的匿名函数,这有什么用?另外我没有找到任何一个php里面用到了这个actions.js,没有地方添加这
匿名函数有什么作用,最近在看新浪xweibo的代码,里面有个actions.js文件,就是一个大的匿名函数,这有什么用?
另外我没有找到任何一个php里面用到了这个actions.js,没有地方添加这个文件的引用,那这个js是怎么起作用的?刚开始做web开发,很多地方不明白,请各位赐教。

19 个解决方案

#1


就这样我们也不知道它是干什么的。。。

#2


引用 1 楼 zsx841021 的回复:
就这样我们也不知道它是干什么的。。。

能说下匿名函数是干嘛的吗,那个js文件太长了

#3


引用 2 楼 gscool 的回复:
引用 1 楼 zsx841021 的回复:

就这样我们也不知道它是干什么的。。。

能说下匿名函数是干嘛的吗,那个js文件太长了


有时候使用匿名函数避开变量名冲突,因为js是用函数划分变量作用域的,外面写个匿名函数,就可以使js变量不会跟全局变量冲突

#4


代码我精简了一下,把函数的实现去掉了

/*!
 * 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
 * 该拦截器检测登录用户是否具备执行当前动作的权限。

 * 目前检测的权限有:
  * 

     * 

  •     登录权限
       

  •  * 

    登录权限:如果当前action.na未设置为true,则提示要求用户登录。

    登录类型由全局配置loginCfg属性指定。

    登录类型:
 * 

     * 
  • 仅使用新浪帐号直接登录

  •  * 
  • 仅使用原有站点帐号登录

  •  * 
  • 使用新浪帐号与原有站点帐号并存方式登录

  •  * 


 */


// 增加全局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值可为

  * 

     * 
  • 1:用样式显示已关注;

  •  * 
  • 2:用显示已关注

  •  * 
  • 其它为刷新当前页

  •  * 

 */
.reg('fl', function( e ){
})

/**
 * @event ufl
 * 取消关注
 * @param {String} u 用户ID
 * @param {Number} [f] 动作类型
 * f值可为

  * 

     * 
  • 1:显示“关注他”标签

  •  * 
  • 其它为刷新当前页

  •  * 

 */
.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, $);

#5


避开变量名冲突!

#6


引用楼主 gscool 的回复:
匿名函数有什么作用,最近在看新浪xweibo的代码,里面有个actions.js文件,就是一个大的匿名函数,这有什么用?
另外我没有找到任何一个php里面用到了这个actions.js,没有地方添加这个文件的引用,那这个js是怎么起作用的?刚开始做web开发,很多地方不明白,请各位赐教。
你找不到不代表没在用吧。

#7


我怎么没有找到那个文件

#8


引用 5 楼 hch126163 的回复:
避开变量名冲突!

那像这个js,我都没有找到任何地方在引用他,但是确确实实这个js起作用了,他根据php模版里面的rel标志来起相应的作用,那我该怎么知道这个js是如何起作用的。另外js调试的话用什么来调试啊?

#9


引用 7 楼 hphone 的回复:
我怎么没有找到那个文件

在xweibo下的js/mod/目录下

#10


引用 8 楼 gscool 的回复:
引用 5 楼 hch126163 的回复:

避开变量名冲突!

那像这个js,我都没有找到任何地方在引用他,但是确确实实这个js起作用了,他根据php模版里面的rel标志来起相应的作用,那我该怎么知道这个js是如何起作用的。另外js调试的话用什么来调试啊?
调试IE8+ chrome 按F12 ,firefox安装firebug

#11


引用 6 楼 p2227 的回复:
引用楼主 gscool 的回复:
匿名函数有什么作用,最近在看新浪xweibo的代码,里面有个actions.js文件,就是一个大的匿名函数,这有什么用?
另外我没有找到任何一个php里面用到了这个actions.js,没有地方添加这个文件的引用,那这个js是怎么起作用的?刚开始做web开发,很多地方不明白,请各位赐教。
你找不到不代表没在用吧。

对啊,肯定是在用了,但是我想不通没有引用的话是怎么用啊

#12


(function(){})()这是匿名函数自执行的写法,详细点说就是这样的写法是定义一个匿名函数,然后马上执行,也就是说他是自动执行的,并不需要别人来调用。主要的作用是为了避开变量名冲突。

#13


给个简单的例子


    
        
        
        
    
    
        
    

#14


引用 13 楼 axiheyhey 的回复:
给个简单的例子HTML code


    
        
        
        
    
    
        

#15


引用 14 楼 p2227 的回复:
楼主的意思是另外一个独立的js文件,但没找到
呃,问题没看清楚,尴尬。
js文件是必须要先引入才能使用的,没有在页面上显示的引入,也可以用js动态引入的,典型的工具是require.js或steal.js,有兴趣的可以google。。

#16


那个是自启动的匿名函数,就是会加载JS时就会跑一遍,写法就是function ({})()

#17


是可以避免命名冲突,但是一般情况下绝不是为这个理由使用匿名函数
在这儿我觉得这样写的理由太简单了,就是为了写着方便,我自己也经常这样写,比如事件函数,回调函数这些都需要传递函数引用作参数。本来就只是为了传一个函数作为参数,函数匿不匿名没有区别,难道我都要先把函数定义好,再传函数名?匿名的写起来方便多了,为什么不匿名?

#18


引用 13 楼 axiheyhey 的回复:
给个简单的例子HTML code


    
        
        
        
    
    
        
       ……


这不就是典型的闭包么。。。

#19


对于有些用过一次就再也不想用的方法可以用匿名方法  再有就像3楼高手所说的可以避免变量名冲突

#20


  • 浅谈Javascript的匿名函数中的this对象
  • Javascript关于闭包,匿名函数,this,对象等的一些理解

推荐阅读
author-avatar
blovejin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有