函数是包含需要反复执行的代码块。函数可以没有参数或包含多个参数,能返回任意一个值。
函数的创建有多种方法:
在设置一个函数名时我更喜欢命名函数表达式,这有相当的深度和技术因素。 你可能在其它的 JavaScript 代码中看到过这两种方法的使用。
Example 2.34. 一个简单函数
var greet = function(person, greeting) { var text = greeting + ', ' + person; console.log(text); }; greet('Rebecca', 'Hello');
Example 2.35. 函数返回一个值
var greet = function(person, greeting) { var text = greeting + ', ' + person; return text; }; console.log(greet('Rebecca','hello'));
Example 2.36. 函数返回另一个函数
var greet = function(person, greeting) { var text = greeting + ', ' + person; return function() { console.log(text); }; }; var greeting = greet('Rebecca', 'Hello'); greeting();
JavaScript中一个常见的模式是自执行匿名函数。这个模式创建一个函数表述式然后立即执行函数。这个模式为避免你在代码中乱用全局命名空间将非常有用 -- 没有在函数内声明的变量在函数外也是可见的
Example 2.37. 一个自执行的匿名函数
(function(){ var foo = 'Hello world'; })(); console.log(foo); // undefined!
在 JavaScript 中, 函数是"一等公民" -- 它们能赋予变量或作为参数传递给其它函数。函数作为参数传递在 jQuery 中是一个非常普遍的习惯。
Example 2.38. 以参数的方式传递一个匿名函数
var myFn = function(fn) { var result = fn(); console.log(result); }; myFn(function() { return 'hello world'; }); // logs 'hello world'
Example 2.39. 以参数的方式传递一个命名函数
var myFn = function(fn) { var result = fn(); console.log(result); }; var myOtherFn = function() { return 'hello world'; }; myFn(myOtherFn); // logs 'hello world'
Copyright Rebecca Murphey, released under the Creative Commons Attribution-Share Alike 3.0 United States license.