javascript 函数也是数据类型

在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"
函数也是一种数据类型,这种类型就是 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')
                        };  
                }
第一次调用a()  alert('A')会被执行   ,第二次调用a() 变量a就已经b诶重新定义了,这时执行的是alert(‘B’)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值