如果语句未定义,则简化Javascript

时间:2014-07-18 08:09:54

标签: javascript angularjs angularjs-scope typeof

if (typeof $scope.input.gps === 'undefined') {
    $scope.msgBody  = 'Location not found.';
} else {
    $scope.msgBody  = $scope.input.gps+' not found.';
}
flash.pop({title: 'Error', body: $scope.msgBody, type: 'error'});

是否有更简单的方法来执行此if语句并将其包含在flash.pop

2 个答案:

答案 0 :(得分:4)

清晰,易于维护的代码没有任何问题,即使最初输入的字符数较多,也可能会节省大量的时间和精力。

似乎你需要设置$ scope.msgBody的值,我不认为在作业中这样做是个好主意。考虑:

$scope.msgBody = typeof $scope.input.gps === 'undefined'? 'Location not found.' :
                                                          $scope.input.gps + ' not found.'

然而,我并不认为这更容易"。

答案 1 :(得分:3)

您可以使用$scope.msgBody = ($scope.input.gps || 'Location') + ' not found.';

但请注意Location不仅会$scope.input.gps undefined,还会null""0NaNfalse。这些值由falsy概念涵盖,请参阅http://www.sitepoint.com/javascript-truthy-falsy/