您的位置:首页 > Web前端 > JavaScript

JavaScript:函数的定义和调用

2013-06-06 00:49 309 查看
函数是定义一次但却可以调用或执行任意多次的一段JavaScript代码。函数可以有参数,函数常常使用这些参数来计算一个返回值,这个值也称为函数调用表达式的值。当一个函数在一个对象上被调用的时候,这个函数就叫作方法。注意定义函数时可以使用个数可变的参数,而且函数既可以有return语句,也可以没有return语句。return语句能使函数停止运行,并且把表达式的值返回给函数调用者。如果return语句没有一个相关的表达式,它会返回undefined。如果函数不包含return语句,它就只执行函数体中的每条语句,然后返回给调用者undefined。

因为JavaScript是一种宽松类型的语言,所以不能给函数的参数指定一个数据类型,而且JavaScript也不会检测传递过来的数据是不是那个函数所要求的类型。如果参数的数据类型很重要,那么可以用运算符typeof对它进行检测。JavaScript也不会检测传递给它的参数个数是否正确。如果传递的参数比函数需要的个数多,那么多余的值会被忽略掉。如果传递的参数比函数需要的个数少,那么所忽略的几个参数就会被赋予undefined值。

函数直接量

JavaScript允许用函数直接量来定义函数。函数直接量是一个表达式,它可以定义匿名函数。下面的两行代码分别使用function语句和函数直接量定义了两个基本上相同的函数。

function f(x){return x*x} //function statement
var f=function(x){return x*x}  //function literal
虽然函数直接量创建的是未命名函数,但是它的语法也规定它可以指定函数名,这在编写调用自身的递归函数时非常有用。例如:

var f=function fact(x){if(x<=1) return 1;else return x*fact(x-1)}
上面的代码定义了一个未命名函数,并把对它的引用存储在变量f中。它并没有真正把对函数的引用存储到名为fact的变量中,而只是允许函数体用这个名字来引用自身。

由于函数直接量都是由JavaScript的表达式创建的,而不是由语句创建的,所以使用它们的方式也就更加灵活,尤其适用于那些只使用一次而且无需命名的函数。例如,一个使用函数直接量表达式指定的函数可以存储在一个变量中,传递给其他的函数,甚至被直接调用:

f[0]=function(x){return x*x;};  //define a function and store it
a.sort(function(a,b){return a-b;});  //define a function;pass it to another
var tensquared=(function(x){return x*x;}) (10);  //define and invoke


函数命名

任何合法的JavaScript标识符都可以用作一个函数名。要尽量选择描述性强而且精炼的函数名。函数名习惯上以小写字母打头,当一个名字包含多个单词的时候,可以采用下划线法或者驼峰法命名。如like_this()
likeThis()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: