当lsEstimator
是包含2个元素的数组时,此函数返回true
:
function got_estimators() {
var retval =
(typeof lsEstimator != 'undefined' &&
lsEstimator != null &&
lsEstimator.length > 0);
return retval;
}
但是此功能没有(我认为,它会在Chrome和FF中返回undefined
):
function got_estimators() {
return
(typeof lsEstimator != 'undefined' &&
lsEstimator != null &&
lsEstimator.length > 0);
}
为什么?
答案 0 :(得分:17)
由于第二个示例中return
之后的换行符。代码评估为:
function got_estimators() {
return; // <-- bare return statement always results in `undefined`.
(typeof lsEstimator != 'undefined' &&
lsEstimator != null &&
lsEstimator.length > 0);
}
JavaScript甚至没有评估逻辑运算符。
为什么会这样?因为JavaScript具有自动分号插入,即它尝试在“有意义的地方”插入分号(more information here)。
将return
关键字和返回值放在同一行:
return (typeof lsEstimator != 'undefined' &&
lsEstimator != null &&
lsEstimator.length > 0);