Javascript:创建带状态的函数

标签 javascript

我想构建一个维护状态的 javascript 函数。这是我想出的一种模式,但我脑海中的某些东西告诉我这是一种反模式。

function f() { 
    var state = 1;
    f = function() {
        return state++;
    };
    return f();
};

这有什么问题吗?如果是这样,什么是更好的方法?

最佳答案

好吧,最好 方法是什么,这是一个见仁见智的问题,但是(虽然我知道它有效)我对让函数覆盖自身有点不舒服。一个类似的模式不这样做但实际上仍然使用相同的闭包思想是这样的:

var f = function() {
           var state = 1;
           return function() {
              return state++;
           };
        }();

或者这是另一种方式:

function f() {
   return f.state++;
}
f.state = 1;

当然,f.state 方法的优点缺点(取决于您的需要)是 .state 属性可以是由其他代码读取和修改。

关于Javascript:创建带状态的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161671/

相关文章:

javascript - 如何从 JavaScript 文件覆盖 html 元素

javascript - setTimeout(fn,0) 在应用样式之前触发

javascript - 加载新组件,同时将 href 添加到 url

javascript - 动态改变特定div的颜色

javascript - 了解 TypeScript 封装

javascript - Humanizer.Js 错误

javascript - jQuery/JavaScript 碰撞检测

javascript - 强制 CSS :hover to update after a transition (opening a menu) 的解决方法

javascript - 传递给 SCEditor 时无法使 JSON 对象正常工作

javascript - 如何以这样的方式呈现 JSP,即在该字段的下拉列表中选择复选框(不完全是使用 id 创建的复选框)