在javascript中有一个概念我们必须明确——函数也是一种数据类型,
下面的两种函数定义方法在本质上是一致的
JavaScript Code
1
2 3 4 |
>>>
function f() {
return
1;}
>>> var f= function(){ return 1;} |
JavaScript Code
1
2 3 |
>>>
function g() {
return
1;}
>>> typeof g; "function" |
1、它所包含的是代码
2、它们是可执行的(或者说是可调用的)
既然函数是一种数据类型,那么自然就可以相互赋值、删除,函数的命名规则也跟一般变量相同
JavaScript Code
1
2 3 4 5 6 7 8 9 |
>>>
var sum=
function(a,b){
return a+b}
>>> var add=sum >>> delete sum true >>> typeof sum "undefined" >>> typeof add "function" |
回调函数
既然函数可以像其他类型的数据那样赋值给某个变量,那么可不可以当作参数传递给其他函数呢?
JavaScript Code
1
2 3 4 5 6 |
>>>
function add(a,b){
return a()+b()}
>>> function one(){ return 1;} >>> function two () { return 2;} >>> add(one ,two); 3 |
自调函数
匿名函数怎样自己调用自己?直接在后面加一个括号
JavaScript Code
1
2 3 |
>>> (
function() {alert( 'bool')} )() |
JavaScript Code
1
2 3 4 5 6 |
>>> (
function (name) { alert(name+ ""); } )( "我") |
内部(私有)函数
既然i函数和其他类型的值在本质上是一样的,因而我们可以在一个函数中定义另外一个函数
JavaScript Code
1
2 3 4 5 6 7 8 9 10 11 |
>>>
var a=
function(p)
{ var b= function(t) { return t* 2; }; return "结果是"+b(p); } >>> a( 6) "结果是12" |
返回函数的函数
JavaScript Code
1
2 3 4 5 6 |
>>>
function a(){alert(
'A');
return
function (){alert(
'B')};}
>>> var t=a() >>> t() //等价于 >>> a()() |
重写自己的函数
JavaScript Code
1
2 3 4 5 6 7 8 |
>>>
function a()
{ alert( 'A'); a= function() { alert( 'B') }; } |