在java脚本中重写函数

Goo*_*33d 9 javascript

刚刚在Javascript中遇到了一个时髦的函数重写概念.

var foo = function () {
    alert("Hello");
    foo = function () {alert("World !");};
};
foo();
foo();
Run Code Online (Sandbox Code Playgroud)

在什么情况下这些有用,是否有任何其他脚本语言支持这种代码?

提琴手链接:http://jsfiddle.net/4t2Bh/

agg*_*sol 1

您可以使用此习惯用法在第一次调用时初始化 LUT,如下所示

var getBase32Value = function (dummy) {

    var base32Lut = {};
    var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";

    for(var i=0; i<alphabet.length; i+=1) {
        base32Lut[ alphabet[i] ] = i;
    }

    getBase32Value = function (v) {
        return base32Lut[ v ];
    }
    return base32Lut[ dummy ];
}
Run Code Online (Sandbox Code Playgroud)