上面两种方法都是全局函数 不过你第二种写发本身就有错误. 应该这样写 var aa = function(){alert(1);} 如果有实名参数可以这样写 var aa = function(str){alert(str);} 匿名参数的话 var aa = function(){ var s = ""; s += "The individual arguments are: " for (n=0; n< arguments.length; n++){ s += ArgTest.arguments[n]; s += " "; } alert(s); } aa(1, 2, "hello", new Date());
function curry() {
if (!arguments.length) return this;
var __method = this, args = Array.prototype.slice.call(arguments,0);
return function() {
return __method.apply(this, args.concat($A(Array.prototype.slice.call(arguments,0))));
}
}
AA.curry(1,3,4,5)
function AA(){
//your code
}你想写的第二种定义方式应该是这样
var AA = function()
{
}
记住,不要写成AA(),小括号是运算符,代表函数的执行。也叫函数直接量,将一个没有命名的函数(匿名函数)赋给一个变量(AA),或者说AA这个引用指向了后面的函数。后面的代码就可以用AA()去调用这个函数了。直接在<script type="text/javascript"></script>中定义的函数就是全局函数。全局函数默认是window对象的属性(或者叫window对象的方法)。
局部函数可以这样理解,函数的嵌套,里面的函数就是局部函数。而嵌套函数最容易产生闭包,呵呵,闭包比较难理解。不扯了。举个例子,不用解释了吧,里面的就是你说的局部函数。
function outerFun() {
function innerFun() {
alert('hello');
}
}
innerFun()就是一个内部函数,包含在outerFun()的作用域中。这意味着在outerFun()里调用innerFun()是可行的,而不是在outerFun()外面调用。
另外将一个函数赋值给一个非window对象的属性,这个函数也是局部函数。
好了,就说这么多了。js的function非常特殊,它可以作为对象(象数字、字符串、对象、数组,每个function都有自己的一些属性和方法),可以作为对象的方法,作为构造函数去模拟类。
不过你第二种写发本身就有错误.
应该这样写
var aa = function(){alert(1);}
如果有实名参数可以这样写
var aa = function(str){alert(str);}
匿名参数的话
var aa = function(){
var s = "";
s += "The individual arguments are: "
for (n=0; n< arguments.length; n++){
s += ArgTest.arguments[n];
s += " ";
}
alert(s);
}
aa(1, 2, "hello", new Date());