论坛首页 Web前端技术论坛

Javascript 函数 (二) 函数做为数据类型(Functions are data)

浏览 2282 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-25   最后修改:2008-12-30

Functions are data

这一篇是函数里比较重要的概念,那就是函数是一个数据。看个例子

function f(){return 1;}
var f=function(){return 1;}

这两个函数定义都是相同的。

typeof f;

 

f的值为"function",所以说Javascript 的 函数是个数据类型。它有比较两个重要的特点

1.它包含了代码

2.能被执行

看个例子

var sum = function(a,b){return a+b;}
var add = sum;
sum=undefined;
typeof sum;
typeof add;
add(1,2);

我们把函数sum做为一个值赋给了add,发现删除了sum不影响add的调用。所以函数也就是个正常的赋值。

匿名函数(Anonymous Functions)

Javascript中,可以不用写赋值的代码,如

"abcd" 1 [1,2,3]

这样都不会报错,这些数据叫做匿名的。同样的函数做为数据也可以是匿名的

function(a){return a}

匿名函数的作用有两个

1.可以把匿名函数做为一个参数传入到另一个函数中。

2.你可以理解运行这个匿名函数

下面就会详细讨论这两个功能的作用了。

 

   发表时间:2008-12-29  
var sum = function(a.b){return a+b;}  
var add = sum;  
delete sum;  
typeof sum;  
typeof add;      
add(1,2); 

lz自己没有测试吧,delete是从对象中删除一个属性,或从数组中删除一个元素。你上面的delete根本就没有起作用。
0 请登录后投票
   发表时间:2008-12-30  
hanjs 写道
var sum = function(a.b){return a+b;}  
var add = sum;  
delete sum;  
typeof sum;  
typeof add;      
add(1,2); 

lz自己没有测试吧,delete是从对象中删除一个属性,或从数组中删除一个元素。你上面的delete根本就没有起作用。

不好意思,是我笔误。。这个错误并不是delete引起的 。delete是可以删除数据的。
而是 我的 function(a,b) 参数 我写为了 a.b。。。。。不好意思  笔误
0 请登录后投票
   发表时间:2008-12-30  
var sum = function(a,b){return a+b;} 
var add = sum;
alert(typeof sum);  //function
delete sum;
alert(typeof sum);  //function
alert(add(1,2));    //3

delete没有起作用
0 请登录后投票
   发表时间:2008-12-30  
风雪涟漪 写道

不好意思,是我笔误。。这个错误并不是delete引起的 。delete是可以删除数据的。
而是 我的 function(a,b) 参数 我写为了 a.b。。。。。不好意思  笔误

delete可以删除数据,但是不能删除通过var来声明的变量,楼主你确实没有测试.........
0 请登录后投票
   发表时间:2008-12-30  
sdcyst 写道
风雪涟漪 写道

不好意思,是我笔误。。这个错误并不是delete引起的 。delete是可以删除数据的。
而是 我的 function(a,b) 参数 我写为了 a.b。。。。。不好意思  笔误

delete可以删除数据,但是不能删除通过var来声明的变量,楼主你确实没有测试.........

我是用FireBug来测试的。delete确实在网页中失效,却在firebug里好用。。
我把文章的代码修改下。呵呵
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics