最佳 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 为真。
如果有一个函数将被调用来检测设置页面中的变化,这很简单。
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 为真。