Skip to main content
 首页 » 编程设计

javascript之检查真实的显式性在设计上是不是很糟糕

2024年08月12日10lonelyxmas

显式检查 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 之外,值还可以是 truthyfalsy

考虑:

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)。