JavaScript:作为数据的函数

来源:互联网 发布:原版优化9拜占庭 编辑:程序博客网 时间:2024/04/28 05:39

函数最重要的特性就是它们能够被定义和调用。函数的定义和调用是大多数程序设计语言的语法特性。但是在JavaScript中,函数并不只是一种语法,还可以是数据,这意味着能够把函数赋给变量,存储在对象的属性中或存储在数组的元素中,作为参数传递给函数等等。

要理解函数是如何作为数据及JavaScript语法的,请考虑如下的函数定义:

function square(x){return x*x;}
这个定义创建了一个新的函数对象,并且把这个对象赋给了变量square。实际上,函数名并没有什么实质意义,它不过是用来引用函数的变量的名字。可以将这个函数赋给其他的变量,它仍然会以相同的方式起作用:

var a=square(4); //a contains the number 16var b=square;  //now b refers to the same function that square does;var c=b(5);  //c contains the number 25
除了赋给全局变量之外,还可以将函数赋给对象的属性。在这种情况下,我们称函数为方法。

var o=new Object();o.square=function(x){return x*x;}y=o.square(16);  //y equals 256
函数可以没有函数名,就像我们将函数赋给数组元素时那样:

var a=new Array(3);a[0]=function(x){return x*x;}a[1]=20;a[2]=a[0](a[1]); //a[2] contains 400
虽然上例使用的函数调用的语法比较奇怪,但它仍旧是JavaScript的( )运算符的合法用法。

将函数作为参数传递给其他函数的一个典型例子就是Array.sort( )函数。这个函数是对数组的元素进行排序。由于排序可依据的方式有很多,所以函数sort( )需要另一个函数作为它的参数来告诉它以何种方式执行排序。作为参数的函数的工作非常简单,它采用两个数组元素,比较这两个元素,然后返回一个值来说明哪个元素排在前面即可。该函数参数使方法Array.sort( )具有极佳的通用性和极大的灵活性,使用它就可以将任何类型的数据排成所有可能想到的顺序。

原创粉丝点击