Javascript 函数,而无需每次重新声明

Javascript 函数,而无需每次重新声明,javascript,functional-programming,Javascript,Functional Programming,可以在javascript中的函数内声明函数。 比如: 然而,它可能不是最快的,因为每次调用my时,都必须重新声明支票。但在我的范围之外宣布支票将污染全球范围 如果my是一个构造函数my,则可以将check添加到其原型中,但不幸的是,这不适用于正常函数 解决此问题的便捷方法是什么?如果在调用my之间确实可以重用check,则可以在内联调用的作用域函数中创建my和check,并从中返回my: var my = function() { // <=== Scoping function

可以在javascript中的函数内声明函数。 比如:

然而,它可能不是最快的,因为每次调用my时,都必须重新声明支票。但在我的范围之外宣布支票将污染全球范围

如果my是一个构造函数my,则可以将check添加到其原型中,但不幸的是,这不适用于正常函数


解决此问题的便捷方法是什么?

如果在调用
my
之间确实可以重用
check
,则可以在内联调用的作用域函数中创建
my
check
,并从中返回
my

var my = function() { // <=== Scoping function

    function my(){
        console.log( check() ? "yes" : "no");
    }

    function check(){
        return true;
    }

    return my;        // <=== Returns `my`
}();                  // <=== () calls scoping immediately

my();

不确定我是否正确理解了您的问题,但您可以将函数设置为返回的一部分,并仅在需要时调用它,例如:

function my(){
    // Function code here
    return {
        check : function(){
            return true;
        }
    };
}

var myVar = my();
console.log(myVar.check() ? "true" : "false");
var my = (function() { // <=== Scoping function

    function my(){
        console.log( check() ? "yes" : "no");
    }

    function check(){
        return true;
    }

    return my;         // <=== Returns `my`
})();                  // <=== () calls scoping immediately

my();
function my(){
    // Function code here
    return {
        check : function(){
            return true;
        }
    };
}

var myVar = my();
console.log(myVar.check() ? "true" : "false");