codecamp

Node.js 函数

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);

上面的代码生成以下结果。

锥体积计算结果
Node.js 数组函数
Node.js 高阶函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }