OR运算符在javascript中转义未定义

时间:2016-04-12 06:29:49

标签: javascript html5 local-storage

<body ng-app="myApp" ng-controller="myCtrl"> 
   <input type="text" ng-model="name">
   <p ng-hide="name!== 'peter'">peter</p>
   <p ng-show="name!== 'peter'"></p>
   <script>
   //module declaration
   var app = angular.module('myApp', []);
   //controller declaration
   app.controller('myCtrl',function($scope){ 

});
</script> 

上面的代码有错误。 ||在这种情况下,我不知道为什么会这样做。实际上我可以用

来做到这一点
var x = JSON.parse(localStorage.getItem('x')).length || 0;

但那是4行代码。有没有办法在一行中做到这一点?

4 个答案:

答案 0 :(得分:1)

如果找不到密钥,

localStorage.getItem()将返回null,解析可能不会那样。但是一个空数组应该没问题。

var x = JSON.parse(localStorage.getItem('x') || '[]').length;

JSON.parse值上使用null会返回null。在length上调用null会引发错误。

答案 1 :(得分:0)

这应该有效。在询问其长度之前,您需要询问localStorage的项x是否不是null

var array = [{ 'one': 1, 'two': 2, 'three': 3 }, { 'four': 4, 'five': 5, 'six': 6 }];
localStorage.setItem('x', JSON.stringify(array));
if(localStorage.getItem('x') != null) var x = (JSON.parse(localStorage.getItem('x'))).length;

答案 2 :(得分:0)

使用三元运算符How do you use the ? : (conditional) operator in JavaScript?

 x=JSON.parse(localStorage.getItem('x')).length?JSON.parse(localStorage.getItem('x')).length:0;

答案 3 :(得分:0)

尝试速记如果:

var x = JSON.parse(localStorage.getItem('x')).length != 0 ? JSON.parse(localStorage.getItem('x')).length : 0