This question already has answers here:
Assign variable in if condition statement, good practice or not? [closed]
                                
                                    (11个答案)
                                
                        
                                3年前关闭。
            
                    
我刚刚遇到了一段JavaScript代码,该代码在将使用逻辑&&或逻辑OR表达式的位置使用了赋值语句:

var geo;

function getGeoLocation() {
    try {
        if ( !! navigator.geolocation ) {
            return navigator.geolocation;
        } else {
            return undefined;
        }
    } catch(e) {
      return undefined;
    }
}


if (geo = getGeoLocation()) {
 // ^^^^^^^^^^^^^^^^^^^^^ this is the statement I am interested in
  console.log('conditional expression was true/truthy');
}


我的问题是,从if语句的角度来看,当
geo = getGeoLocation()被评估?
特别是它的结果是什么?那是什么类型?
是吗


函数getGeoLocation()返回什么?
(其中类型为真/假)
这是作业的“结果”吗?即是否分配了非空值?
(在这种情况下,“结果”可能是布尔值,是/否?)
或者是其他东西?

最佳答案

if (geo = getGeoLocation()) {
  // ...
}



  我的问题是,从if语句的角度来看,当
  geo = getGeoLocation()已评估?


以下是发生的时间顺序:


getGeoLocation()将首先执行
接下来将进行赋值操作,所有getGeolocation()返回的内容都将存储在geo


如果存在,这将是undefinednavigator.geolocation

然后将geo评估为(针对truthiness测试)
if语句的条件


该代码的等效项如下:

geo = getGeoLocation();
if (geo) {
  // ...
}

09-20 15:16