乱就一个字 完全增加新手的学习门槛 各种自定义写法 乱七八糟
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类来定义匿名函数
臃肿最后一个参数容易臃肿 , 不推荐使用