定义函数方式:
1 一般方式
function fn(){
return "a";
}
2 构造函数法
var fn = new Function();
3 直接量方式
var fn = function(){
return "a";
}
<script type="text/javascript">
/*
* 1 匿名函数:没有名的函数
* * 作用:
* * (匿名回调函数)可以将匿名函数作为参数传递给其他函数。这样,接收方函数就能利用所传递的函数来完成某些事情。
* * (自调函数)可以定义某个匿名函数来执行某些一次性任务。
*/
// function(){}
/*
* 函数one和two就是回调函数
* * 将一个函数作为参数传递给另一个函数,而作为参数的函数就叫做回调函数
*/
// var one = function(){return 1;}
// var two = function(){return 2;}
// function fn(a,b){
// return a() + b();
// }
// alert(fn(one,two)); //output 3
//将以上内容进行改写:
/*
* 以下两个函数称之为匿名回调函数
* * 将匿名函数作为参数传递给另一个函数,而作为参数的匿名函数就叫做匿名回调函数
*/
// alert(fn(function(){return 1;},function(){return 2;})); //output 3
/*
* 一次性任务:
* * 做页面初始化加载的函数(不严格)
* * 定义即调用的函数(不严格)
* * 自调函数
* * 第一个小括号:定义函数(普通函数和匿名函数,一定使用匿名函数)
* * 第二个小括号:调用函数(而且传递指定参数)
*/
// function fn(){}
// fn();
// (
// function(){
// alert("javascript");
// }
// )();
// (
// function(str){
// alert(str+" javascript");
// }
// )("hello");
/*
* 特殊函数对于我们来讲(意义):
* * 这些特殊函数不是必要性的
* * 特殊函数的性能等一定比常规方式更好
* * 将这些特殊函数称之为高级用法
*/
/*
* 在一个函数体内,定义了另一个函数:
* * 函数n()就叫做内部(私有)函数 - java中的内部类
* * 意义:保证了私有性 - 只能在当前范围内使用,在外部无法使用
* * 内部函数最后还是要调用一下(只定义不调用的函数没意义)
*/
// function fn(){
// var a = "a";
//
// function n(){
// var b = "b";
//
// return b;
// }
//
// return n(); //函数fn()的返回值是:函数n()的调用 - 返回的就是局部变量b的值
// }
//
// alert(fn()); //output b
// alert(n()); //output undefind
/*
* 返回函数的函数:其实就是内部(私有)函数的一种特殊用法
* * 可以实现在只定义一个函数时,调用到两个逻辑体
* * 实现可以在一个函数域中,使用另一个函数域的变量
* * 外部的函数不能具有真正的返回值内容
*/
function fn(){
//1 第一步处理
var a = "a";
return function(){
//2 进一步处理
return a;
}
}
//alert(fn()); //output function(){return a;}
//var fun = fn();
//var fun = function(){return a;}
//alert(fun()); //output a
alert(fn()()); //output a
</script>