博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)javascript匿名函数
阅读量:6251 次
发布时间:2019-06-22

本文共 1059 字,大约阅读时间需要 3 分钟。

文章来源: 

匿名函数的写法

顾名思义,就是没有名字的函数(⊙﹏⊙b汗)。匿名函数通常用于javascript作用域的控制,可以有效的避免对全局变量的污染。常见的匿名函数有下面四种写法,欢迎补充:

匿名函数写法一

( function ( ) {
//do something } ) ( ) ;

匿名函数写法二

! function ( ) {
//do something } ( ) ;

上面!还可以写成+,!!等多种方式。

上面两种方法是我常用的,下面两种方法是google上找的,我没用过(好吧,我out啦)。

匿名函数写法三

( function ( ) {
//do something } ( ) ) ;

匿名函数写法四

void function ( ) {
//do something } ( ) ;

刚才微博上@朴灵 提出来:写法三比较安全,正如网友@Rain的留言,匿名函数上面的写法都存在前后文;问题,所以需要注意的是匿名函数在压缩工具打包压缩后会出现上下文错误合并()的问题,例如第一种写法,如果下面的代码,未压缩之前是正常的,压缩后就不正常了,所以要严格上下文的;问题,而第三种就不会出现类似问题:

var a  = function ( ) {
} ( function ( ) {
alert ( 1 ) ; } ) ( ) ;

上例中就出现了错误,这就是因为a函数会把他后面的匿名函数作为参数传入a中,这也就解释了为什么有人习惯在匿名函数之前添加;了,就是为了防止上文没有严格遵循javascript语法,漏掉;的问题。

匿名函数的传参

匿名函数可以通过下面的方式进行传参:

( function (win , doc ) {
var $  = function (id ) {
return doc. getElementById (id ) ; } win.$  = $ ; } ) (window , document ) ;

匿名函数的递归

匿名函数中要引用本身,需要使用arguments.callee,下面是使用匿名函数实现的连乘。

( function (n ) {
if (n  <= 0 ) {
return 1 ; } else {
return n  * arguments. callee (n - 1 ) ; } } ) ( 4 ) ;

转载于:https://www.cnblogs.com/caly/archive/2011/12/27/2303245.html

你可能感兴趣的文章
Java代码规范那些事
查看>>
我的友情链接
查看>>
如何更好地对齐分区??
查看>>
使用Python从rds上下载mysql备份文件
查看>>
react native组件的创建
查看>>
批量删除文件
查看>>
Linux网络管理
查看>>
iOS JSPatch 热修复使用
查看>>
某二级行机房搬迁
查看>>
基于MVC+EasyUI的Web开发框架经验总结(4)--使用图表控件Highcharts
查看>>
vs2015 xamarin 添加智能感知
查看>>
call to member function bind_param() on boolean...........
查看>>
刘启成_补充知识:awk:报告生成器
查看>>
Linux LVM逻辑卷配置过程详解
查看>>
【技术分享】VSAN如何处理磁盘或主机故障
查看>>
OS快捷键
查看>>
linux内核中Kconfig和Makefile 详解
查看>>
ASP.NET 使用List<T>.Remove 不生效
查看>>
Nginx的第三方模块ngx-fancyindex安装
查看>>
TCP有限状态机
查看>>