JavaScript是一种函数式编程语言,函数是可以操作、扩展和传递为数据的完全类型化对象。JavaScript中的正常函数结构定义如下。
function functionName() { // function body // optional return; }
所有函数在JavaScript中返回一个值。在没有显式返回语句的情况下,函数返回undefined。
function myData() { return 123; } console.log(myData()); // 123 function myValue() { } console.log(myValue()); // undefined
例子1
以下代码显示如何创建函数:
function hello(name) { console.log("hello " + name); } hello("CSS");
上面的代码生成以下结果。
注意
要在JavaScript中声明函数的参数,请将其列在括号中。在运行时没有检查这些参数:
function hello(name) { console.log("hello " + name); } hello(); hello("CSS", "HTML", "AAA", 4);
上面的代码生成以下结果。
如果传递给函数调用的参数太少,则将为结果变量赋值undefined。如果传入的太多,额外的会unused。所有函数在主体中都有一个预定义的数组,称为 arguments
。它具有传递到函数的所有值,我们可以对参数列表进行额外的检查。
JavaScript中的函数甚至不需要有名称:
var x = function (a, b) { return a + b; } console.log(x(10, 20));
上面的代码生成以下结果。
无名函数通常称为匿名函数。
函数作用域
每次调用函数时,都会创建一个新的变量作用域。在父作用域中声明的变量可用于该函数。在新作用域中声明的变量在函数退出时不可用。
参考下面的代码:
var pet = "cat"; function myMethod() { var pet = "dog"; console.log(pet); } myMethod(); console.log(pet);
上面的代码生成以下结果。
将此作用域与匿名函数组合是更好的使用私有变量的方法,在匿名函数退出时私有变量将消失。
例子2
这里是一个计算锥体积的示例:
var height = 5;var radius = 3;var volume;// declare and immediately call anonymous function to create scope(function () {/*from w w w . j av a 2 s . c o m*/ var pir2 = Math.PI * radius * radius; // temp var volume = (pir2 * height) / 3; })(); console.log(volume);
上面的代码生成以下结果。