首次访问我的网站时,没有设置cookie,因此我的计算返回NaN错误。我该如何解决这个问题(如果没有cookie,则返回0)。
这是我用来获取cookie的原因.....
$scope.WH1 = parseInt($cookies.get('WH1'));
$scope.WH2 = parseInt($cookies.get('WH2'));
$scope.WH3 = parseInt($cookies.get('WH3'));
$scope.WH4 = parseInt($cookies.get('WH4'));
$scope.WH5 = parseInt($cookies.get('WH5'));
并设置它我用.....
$scope.saveInCookie = function() {
$cookies.put('WH1', $scope.WH1);
$cookies.put('WH2', $scope.WH2);
$cookies.put('WH3', $scope.WH3);
$cookies.put('WH4', $scope.WH4);
$cookies.put('WH5', $scope.WH5);
我的小提琴是http://jsfiddle.net/Lvrr0nzc/21/show
我确实尝试过||代码中的0。
答案 0 :(得分:2)
如果没有cookie,则返回0而不是
使用curiously-powerful ||
operator:
$scope.WH1 = parseInt($cookies.get('WH1')) || 0;
$scope.WH2 = parseInt($cookies.get('WH2')) || 0;
$scope.WH3 = parseInt($cookies.get('WH3')) || 0;
$scope.WH4 = parseInt($cookies.get('WH4')) || 0;
$scope.WH5 = parseInt($cookies.get('WH5')) || 0;
这是有效的,因为NaN
是假的||
,所以NaN || 0
是0
,因为||
的结果是第一个操作数的值,如果是值是真实的,否则是第二个操作数的值。
或者您可以在此过程中使用||
:
$scope.WH1 = parseInt($cookies.get('WH1') || "0");
$scope.WH2 = parseInt($cookies.get('WH2') || "0");
$scope.WH3 = parseInt($cookies.get('WH3') || "0");
$scope.WH4 = parseInt($cookies.get('WH4') || "0");
$scope.WH5 = parseInt($cookies.get('WH5') || "0");
如果Cookie不存在,则依赖$cookies.get()
假(null
,undefined
,""
)的值, 可能是,因此value || "0"
可以获取Cookie中的值或字符串"0"
。
但我可能会使用第一个。