显式检查 bool 值 true 是否被认为是不好的?做一个简单的 if(success)
会更好吗?
我见过各种笑话,说 if (someBoolean === true)
在强类型语言中是可怕的代码,但在弱类型语言中也被认为是糟糕的代码吗?
这适用于任何在 if 语句上进行类型强制的弱类型语言。
一个具体的例子是:
var onSuccess = function (JSONfromServer) {
// explicitly check for the boolean value `true`
if (JSONfromServer === true) {
// do some things
}
}
// pass it to an ajax as a callback
doSomeAjax(onSuccess);
[编辑]
在这种特殊情况下,成功变量是从服务器返回的任何有效 JSON。所以它可以是任何东西。如果 bool 值 true 则成功。如果它是一些错误处理对象,那么它将被处理。如果是其他事情,那么可能会悄悄处理。
问题是让服务器以 JSON 形式返回 true
并检查是否有好的方法来处理操作成功的情况。
不过,我想避免专门针对 JavaScript 和 AJAX。
请您参考如下方法:
对于 Javascript,值得注意的是,除了 bool true 和 false 之外,值还可以是 truthy 和 falsy。
考虑:
if (false) // evaluates to false.
if (0) // evaluates to false, 0 is falsy.
if ("") // evaluates to false, empty strings are falsy.
if (null) // evaluates to false, null values are falsy.
if (undefined) // evaluates to false, undefined values are falsy.
if (NaN) // evaluates to false, NaN is falsy.
对象的所有其他值都是真实的。
如果真值和假值导致逻辑错误,则应考虑显式使用 ===
和 !==
运算符来确保按类型比较对象和值(value)。