Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将日期与NaN和未定义进行比较_Javascript_Angularjs - Fatal编程技术网

Javascript 将日期与NaN和未定义进行比较

Javascript 将日期与NaN和未定义进行比较,javascript,angularjs,Javascript,Angularjs,我有一个非常简单的if语句,但我没有太多地使用javascript,所以我认为我在某个地方犯了一个错误。如果转到“我的页面”,您可以看到值被警告为未定义,但即使If参数为==undefined,仍会跳过一段代码。这是AngularJS应用程序有关系吗 网页: javascript: $scope.setDate = function (dateSelected) { alert(dateSelected); var now = new Date(); $scope.lat

我有一个非常简单的if语句,但我没有太多地使用javascript,所以我认为我在某个地方犯了一个错误。如果转到“我的页面”,您可以看到值被警告为未定义,但即使If参数为
==undefined
,仍会跳过一段代码。这是AngularJS应用程序有关系吗

网页:

javascript:

$scope.setDate = function (dateSelected) {
    alert(dateSelected);
    var now = new Date();
    $scope.latest = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes());
    $scope.hoursAgo = Math.round((($scope.latest - dateSelected) / 3600000) * 100) / 100;
    if ($scope.hoursAgo === undefined || $scope.hoursAgo == NaN) {
        alert("Please choose a date/time");
    }
    else {
        alert('You lost your pet ' + $scope.hoursAgo + ' hour(s) ago');
        $scope.checkDateSet = true;            
    }
}
要检查($scope.hoursAgo==undefined | |$scope.hoursAgo==NaN)

这样写

if ($scope.hoursAgo === 'undefined' || isNaN($scope.hoursAgo)) {

你的问题不在于你的if语句NaN有些特殊

例如:
NaN===NaN//false

您可以在此处了解更多信息:

将支票更改为:

if ($scope.hoursAgo === undefined || isNaN($scope.hoursAgo)) {
...
} else {..}

这很有效,谢谢你!“我可以在5分钟内接受你的回答。这只是AngularJS的事情还是应该总是这样检查NaN?”Thomas always in JS。与Angular无关。可能是@Liam的副本,但这个问题中没有NaN,这是我的主要问题