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

时间:2017-05-16 15:35:53

标签: javascript flags

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

hasChanged: function (){
    flag = true;
}

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

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

其他解决方案可能是阻止调用此函数的验证。但无论如何,这将是一种功能和过度杀伤。

这很简单,但我很好奇。 。 。文档,链接,书籍和内容都值得您的回答。

感谢,

1 个答案:

答案 0 :(得分:0)

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

所以,而不是

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

这意味着,如果flag为false,它将返回true。