顾名思义,匿名函数就是没有实际名字的函数,下面,我们先初步了解一下和匿名函数相关的概念。
(1)要使用函数,就要对函数先定义。 function abc(){ }
有参,无参函数 ,有返回值的函数,typeof 返回的都是 function 对象
(1.1)typeof 运算符的用法: //返回一个用来表示表达式数据类型的字符串
typeof的运算数未定义,返回的就是 "undefined".
运算数为数字 typeof(x) = "number"
字符串 typeof(x) = "string"
布尔值 typeof(x) = "boolean"
对象,数组和null typeof(x) = "object"
函数 typeof(x) = "function"
typeof 运算符返回一个用来表示表达式的数据类型的字符串。
可能的字符串有:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。
(2)Function对象能不能直接运用构造函数创建一个新的函数呢?答案是肯定的。
我们通常都不会为他们定名字,而是赋予它的对应事件引用一个匿名函数。
var abc = new Function("x","y","return x*y;");
alert(abc(2,3)); // "6"
(3)var abc=function(x,y){ return x+y; } alert(abc(2,3)); // "5"
上面的操作其实就等于换个方式去定义函数,这种用法是我们比较频繁遇到的。例如我们在设定一个DOM元素事件处理函数的时候,
我们通常都不会为他们定名字,而是赋予它的对应事件引用一个匿名函数。
(4)对匿名函数的调用其实还有一种做法,也就是我们看到的jQuery片段——使用()将匿名函数括起来,然后后面再加一对小括号(包含参数列表)
alert((function(x,y){return x+y;})(2,3));// "5"
alert((new Function("x","y","return x*y;"))(2,3));// "6"
var abc=function(y){
var x=y;// 这个是局部变量
return function(){
alert(x++);// 就是这里调用了闭包特性中的一级函数局部变量的x,并对它进行操作
alert(y--);// 引用的参数变量也是自由变量
}}(5);// 初始化
abc();// "5" "5"
abc();// "6" "4"
abc();// "7" "3"
alert(x);// 报错!“x”未定义!