JS中各种奇葩的匿名函数写法

乱就一个字 完全增加新手的学习门槛 各种自定义写法 乱七八糟 

1. 定义命名函数

function functionName(parameter-list)

{

statement;

}

1)这里的函数名称functionName不能省略 

2) 可以有返回值,也可以没有,用return来返回

3)在同一个<script/...>标签里,运行先调用函数,然后再定义函数, 但是在不同的<script/...>标签里。必须先定义函数,然后后面的标签里可以调用该函数

所以后面的script可以调用前面的定义的函数,

所以有覆盖的问题 有命名重复的问题 文邹一点就是可能污染全局命名空间(防止局部变量与全局变量冲突)。 

所以有下面的匿名函数定义


2.定义匿名函数

function(parameter-list)

{

statement;

};

这种函数定义不需要指定函数名,最后有个分号,所以也有人说是函数表达式

实际上是定义了一个函数对象(Function实例),可以将该对象赋给一个变量,通过该变量来调用匿名函数, 例如 

var a = function(myname) { alert("a");}

a("ccc");


JQuery里源代码都是这么定义的 所以新手迷糊:

(function( global, factory ) {

XXXX;

}(typeof window !== "undefined" ? window : this,                                            function( window, noGlobal ) { 

XXX

 }));


所以可以定义匿名函数并立即调用(自调用匿名函数):


比如:

(function() { 
alert('water'); 
})();

再比如:

(function( window, undefined ) { 

//jquery的所有代码 
})( window ); 

还比如:

(function(){ 
alert('water'); 
}());//有点强制执行的味道~ 


匿名函数表达式模式只不过是通过括号或者void告诉编译器,把function(){}当作函数表达式来解释罢了。这其中并没有那么复杂的优先级和void操作符原理。这只不过是一个简单的语法转换

只要符合函数表达式的语法,我们就可以创建出N种匿名函数代码模式,比如

!!function(){
   alert('yo');
}()
+function(){
   alert('yo');
}()


3,。使用Function类来定义匿名函数

臃肿最后一个参数容易臃肿 , 不推荐使用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值