This question already has answers here:
Assign variable in if condition statement, good practice or not? [closed]
(11个答案)
3年前关闭。
我刚刚遇到了一段JavaScript代码,该代码在将使用逻辑
我的问题是,从
特别是它的结果是什么?那是什么类型?
是吗
函数
(其中类型为真/假)
这是作业的“结果”吗?即是否分配了非空值?
(在这种情况下,“结果”可能是布尔值,是/否?)
或者是其他东西?
我的问题是,从if语句的角度来看,当
geo = getGeoLocation()已评估?
以下是发生的时间顺序:
接下来将进行赋值操作,所有
如果存在,这将是
然后将
该代码的等效项如下:
(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
中如果存在,这将是
undefined
或navigator.geolocation
。然后将
geo
评估为(针对truthiness测试)if
语句的条件该代码的等效项如下:
geo = getGeoLocation();
if (geo) {
// ...
}
09-20 15:16