javascript - 检测变量是否已在赋值中使用

标签 javascript

我正在开发一个动态表单,其中定义的单元格可以:

  • 包含用户直接输入的值
  • 定义为公式(禁止用户输入)。

我需要一种方法来向用户提供提示,突出显示他/她必须填写的单元格才能获得有效的表单。

在其他作品中我可以有

cellA -> 用户输入 cellB -> 用户输入 单元格 C -> 公式 = 单元格 A + 单元格 B cellA 和 cellB 是必需的(突出显示)。这个案子很容易处理。

我还可以有更复杂的公式,称之为脚本。例如

cellC =
    if(cellD == true)
    {
        cellC = cellA;
    }
    else 
    {
        cellC = cellB;
    }

我想知道在 javascript 中是否可以理解变量 cellA 和 cellB 是否已在任何作业中用作正确的部分。

最佳答案

I'm wondering if in javascript it would be possible to understand whether the vars cellA and cellB have been used as a right part in any assignment.

不,你不能挂接到这样读取的变量

不过,您可以将它们设置为对象的访问器属性,这将为您提供一种实现此目的的方法:

const used = { a: false, b: false, c: false};
const values = { };
const cells = {
    get a() {
        used.a = true;
        return values.a;
    },
    set a(value) {
        values.a = value;
    },
    
    get b() {
        used.b = true;
        return values.b;
    },
    set b(value) {
        values.b = value;
    },
    
    get c() {
        used.c = true;
        return values.c;
    },
    set c(value) {
        values.c = value;
    }
};

// You'd only give `cells` to the code doing this, so it doesn' thave
// access to `used` or `values`.
cells.a = 2;
cells.b = 21;
const result = cells.a * cells.b;
console.log("result: " + result);
console.log("a used? " + used.a);
console.log("b used? " + used.b);
console.log("c used? " + used.c);

或者,您可以使用 Proxy 执行类似的操作.

或者,如果您不担心其他代码可以访问标志和值,则可以将它们存储在对象本身上。 (或者使用类实例和 private fields ,它们现在正在 JavaScript 引擎中实现......)

关于javascript - 检测变量是否已在赋值中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59882431/

相关文章:

Javascript 选择 onchange ='this.form.submit()'

javascript - HTML 使 <option> 无效

javascript - 哪种 Web 或浏览器技术是满足我要求的最佳解决方案?

javascript - jQuery 中的 $.map 和 $.grep 有什么区别

javascript - 仅向单击的元素及其子元素添加类

javascript - Angular http.get 不喜欢开头和结尾带有方括号的文本文件

javascript - 查找日期是否是从今天开始的下一个有效日期 Momentjs

javascript - 复制而不保留引用

javascript - 如何将 HTML 与 Python 结合起来?

javascript - Jira Workflow Designer 使用了哪个 JS 库?寻找用于绘制模式依赖关系的库