SOURCE

var a = function () {
    var b = 1;
    return b;
}
var c = new a()


//可以这样做
var sayHi, condition;

if (condition) {
    sayHi = function () {
        alert("Hi!");
    };
} else {
    sayHi = function () {
        alert("Yo!");
    };
}



// function factorial(num) {
//     if (num <= 1) {
//         return 1;
//     } else {
//         return num * factorial(num - 1);
//     }
// }



//  arguments.callee 是一个指向正在执行的函数的指针,因此可以用它来实现对函数
// 的递归调用,例如:
// function factorial(num) {
//     if (num <= 1) {
//         return 1;
//     } else {
//         return num * arguments.callee(num - 1);
//     }
// }

// var anotherFactorial = factorial;
// factorial = null;






var factorial = (function f(num) {
    if (num <= 1) {
        return 1;
    } else {
        return num * f(num - 1);
    }
});


var anotherFactorial = factorial;
factorial = null;

console.log(anotherFactorial(5)); //出错!
console 命令行工具 X clear

                    
>
console