`
风雪涟漪
  • 浏览: 497495 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:8780
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:17718
社区版块
存档分类
最新评论

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

阅读更多

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.你可以理解运行这个匿名函数

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

 

分享到:
评论
5 楼 风雪涟漪 2008-12-30  
sdcyst 写道
风雪涟漪 写道

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

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

我是用FireBug来测试的。delete确实在网页中失效,却在firebug里好用。。
我把文章的代码修改下。呵呵
4 楼 sdcyst 2008-12-30  
风雪涟漪 写道

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

delete可以删除数据,但是不能删除通过var来声明的变量,楼主你确实没有测试.........
3 楼 sdcyst 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没有起作用
2 楼 风雪涟漪 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。。。。。不好意思  笔误
1 楼 hanjs 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根本就没有起作用。

相关推荐

Global site tag (gtag.js) - Google Analytics