Javascript 在IF条件下检查执行顺序

Javascript 在IF条件下检查执行顺序,javascript,Javascript,我有一个调用后端服务并收集响应的程序。收集资料如下。我们对响应对象进行分解,得到错误和数据 const { data, error } = response; 如果没有错误,则error对象将变为null。考虑以下两个选项: 选项一: if (!error) { // handle error } if (error !== null) { // handle error } 选项二: if (!error) { // handle error } if (error !== null)

我有一个调用后端服务并收集响应的程序。收集资料如下。我们对响应对象进行分解,得到
错误
数据

const { data, error } = response;
如果没有错误,则
error
对象将变为null。考虑以下两个选项:

选项一:

if (!error) {
// handle error
}
if (error !== null) {
// handle error
}
选项二:

if (!error) {
// handle error
}
if (error !== null) {
// handle error
}
在选项一中,根据检查以下条件

  • 未定义:如果值未定义且未定义
  • null:如果为null,例如,如果DOM元素不存在
  • 空字符串:“”
  • 0:数字0
  • NaN:不是数字
  • false

  • 当我们调用选项1时,是否有执行顺序?在选项1中如何进行内部条件检查?基于此,是否会对性能产生影响(在粒度级别),如果我们使用选项1而不是选项2

    在使用if语句时没有顺序,JS只是执行类型转换,将任何值强制为布尔值,然后计算结果,请查看此链接以了解更多详细信息:

    虚假结果:

    if (false)
    if (null)
    if (undefined)
    if (0)
    if (NaN)
    if ('')
    if ("")
    if (``)
    if (document.all)
    // => false
    
    if (true)
    if ({})
    if ([])
    if (42)
    if ("foo")
    if new Date())
    if (-42)
    if (3.14)
    if (-3.14)
    if (Infinity)
    if (-Infinity)
    // => true
    
    真实结果:

    if (false)
    if (null)
    if (undefined)
    if (0)
    if (NaN)
    if ('')
    if ("")
    if (``)
    if (document.all)
    // => false
    
    if (true)
    if ({})
    if ([])
    if (42)
    if ("foo")
    if new Date())
    if (-42)
    if (3.14)
    if (-3.14)
    if (Infinity)
    if (-Infinity)
    // => true
    

    微优化的异步与速度?真的吗?我还认为你的意思不是
    if(!error){//handle error}
    这一定是我见过的最微小的过早优化。有趣的是,在这个例子中,分解任务可能是最微小的……我同意这是一个非常微小的优化。这在Git Pull请求评论中出现。我能知道投票被否决的原因吗?