我刚刚遇到一段javascript代码,该代码在使用逻辑z
或逻辑&&
表达式的地方使用了赋值语句:
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()
返回什么?答案 0 :(得分:1)
if (geo = getGeoLocation()) {
// ...
}
我的问题是,从if语句的角度来看,什么是返回时 是否评估了geo = getGeoLocation()?
以下是将要发生的事情的时间顺序:
getGeoLocation()
将首先执行接下来会发生分配操作,其中getGeolocation()
返回的内容将存储在geo
undefined
或navigator.geolocation
。geo
进行评估(测试truthiness)
条件到if
陈述该代码的等价物如下:
geo = getGeoLocation();
if (geo) {
// ...
}
答案 1 :(得分:1)
如果导航器成功,你会得到一个地理位置对象,这是真实的,如果它失败你可以在else部分看到,该函数返回undefined,这是假的。
答案 2 :(得分:-1)
它可能返回true或false,或者可能是1或0。
简单地说,任何非0或false的值都为true,我们可以这样做:
validates :body, presence: true
或
if (true)
always do this
if (false)
never do this