javascript - 在javascript函数中保持变量事件的问题

标签 javascript function variables call

我想在函数中放置一个变量。此变量将根据用户交互更改状态。例如:

function plan_state(current){
    if (current != ''){
        state = current;
    }
    else {
        return state;
    }
}

当文档加载时,我会调用 plan_state('me'),当某些事情发生时,我可能会调用 plan_state('loved')。当我运行一个函数并想检查当前状态时出现问题:

alert(plan_state());

我返回了 undefined,但值应该是“我”,因为我之前在文档加载时设置了这个值。

我做错了什么?

最佳答案

该函数不是有状态的,因为状态变量是在函数内部声明的,因此仅在函数调用的生命周期内存在。一个简单的解决方案是在函数外部全局声明变量。这是 bad bad bad bad .

更好的方法是使用 module pattern .如果您认真对待 JavaScript 开发,这是学习的基本模式。它通过内部(私有(private)变量)启用状态,并公开许多用于更改或获取状态的方法或函数(如面向对象编程)

    var stateModule = (function () {
        var state; // Private Variable

        var pub = {};// public object - returned at end of module

        pub.changeState = function (newstate) {
            state = newstate;
        };

        pub.getState = function() {
            return state;
        }

        return pub; // expose externally
    }());

所以 stateModule.changeState("newstate"); 设置状态

var theState = stateModule.getState();获取状态

关于javascript - 在javascript函数中保持变量事件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452604/

相关文章:

javascript - myVar = !!someOtherVar

javascript - 为什么我的子菜单中的 anchor 返回 false?

javascript - 导航到其他 Controller 表单应用程序 Controller

function - 创建自定义 XSLT 函数

javascript - 有人可以帮我解释一下剩下的部分吗?

variables - 在Lua中不等于或等于

javascript - 是否可以执行 "if .. || if .."?

javascript - 在 StorybookJS 中模拟 useState

javascript - jQuery "$(...).effect is not a function"

bash - 将彩色输出捕获到 bash 变量