【发布时间】:2015-08-19 18:51:08
【问题描述】:
为了使我的代码更简洁,我在一个 javascript 文件中执行以下操作:
var _weight;
function getWeight(){
_weight || InitializeWeight();
// do some stuff
return _weight;
}
function InitializeWeight(){
_weight = 3;
}
JSHint 在像这些 "_weight || InitializeWeight()" 之类的速记语句上抛出错误:
预期的是赋值或函数调用,但看到的是表达式。
所以我检查它是否未定义,调用这个方法。
这真的错了吗?效果很好。
如何在不让 JSHint 对我产生影响的情况下编写此语句?
【问题讨论】:
-
你的意思是把
_weight = _weight || InitializeWeight()? -
你为什么要在你的代码中写这样的速记。花几个额外的字符并使用
if语句。让 minifiers 处理速记。 -
表达式返回结果。运行表达式而不使用其结果是可疑的。如果您在 JS 代码中看到以下行:
1 + 2;,您首先会想到什么? -
您的代码是有效的 Javascript。 JSHint 对此发出警告,因为在不使用其值的情况下编写布尔表达式看起来很可疑。
-
JSHint 不知道调用
InitializeWeight()只是因为它的副作用。大多数时候,如果你写了这样的语句,那是因为你忘记了赋值。像 JSHint 和 JSLint 这样的工具的目的是帮助你发现这些类型的错误。
标签: javascript validation jshint shorthand-if