函数声明
如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。数可以调用自身,这就是递归(recursion)。下面就是通过递归,计算斐波那契数列的代码。由于函数与其他数据类型地位平等,所以在JavaScript语言中又称函数为第一等公民。所以采用function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。根据ECMAScript的规范,不得在非函数的代码块中声明函数,最常见的情况就是if和try语句。
//function命令
function print(s) {
console.log(s);
}
//函数表达式
var print = function(s) {
console.log(s);
};
//Function构造函数
var add = new Function(
'x',
'y',
'return x + y'
);
// 等同于
function add(x, y) {
return x + y;
}
//递归
function fib(num) {
if (num === 0) return 0;
if (num === 1) return 1;
return fib(num - 2) + fib(num - 1);
}
fib(6) // 8
//不要这么做
if (foo) {
function x() {}
}
try {
function x() {}
} catch(e) {
console.log(e);
}
网友评论