最佳 js 实践设置标志,覆盖 vs 检查

Best js practices Setting a flag, override vs check

如果有一个函数将被调用来检测设置页面中的变化,这很简单。

hasChanged: function (){
    flag = true;
}

但用户可以不断更改内容并多次调用此函数。最好总是调用它(并再次设置布尔值)而不是

hasChanged: function (){
    if(!flag)
       flag = true;
}

其他解决方案可能是阻止调用此函数的验证。但无论如何这将是一个功能和矫枉过正。

这件事真的很简单,但我很好奇。 . .感谢您提供文档、链接、书籍和资料。

谢谢,

首先,切换全局命名空间或 window 对象中的变量以避免副作用是一种不好的做法。

所以,而不是

hasChanged: function () {
  if (!window.flag) {
     window.flag = true
  }
}

你应该做的,

hasChanged: function (flag) {
  if (!flag) {
     flag = true
  }
  return flag
}

其次,您可以简化和缩小到:

hasChanged: function (flag) {
  return !flag
}

或者,如果您使用的是 > ES2016,一行:

hasChanged: (flag) => !flag

这意味着,如果标志为假,它将 return 为真。