看起来:

if (typeof a == 'undefined') {
    a = 0;
}


(typeof a != 'undefined') || (a = 0)

在Javascript中具有相同的效果。

我真的很喜欢第二个代码,因为它很短,只有一个行代码,但这合法且可以跨浏览器使用吗?
我的意思是,jslint说它有错误。我应该毫无顾虑地使用它吗?

最佳答案

恕我直言|| (a = 0)|| (a == 0)过于相似,因此令人困惑。有一天,过分热心的开发人员会“修复”它,从而更改代码的含义。每个其他开发人员都必须坐一会儿才能弄清楚这是您的意图还是简单的错误。

这实际上是JSLint想要说的:



我避免使用混淆的构造,因为它们会损害可读性。 a = a || 0;在含义上更易于识别。

10-07 17:46