2016-05-13 69 views
1

我有一段代码,我正在检查值是否为nullturnedoff,然后将blank space放在左侧的变量中。但由于某种原因,turnedoff未被替换。我究竟做错了什么?三元运算符检查多个字符串

JS:

$scope.ModelAux ={ 
    ssclientID: sessionStorage.clientId === ('null' || 'turnedoff') ? '' : sessionStorage.clientId 
}; 

alert($scope.ModelAux.ssclientID); 

CSHTML:

<input type="text" name="clientID" class="form-control input-md" ng-model="ModelAux.ssclientID" required/> 
+1

'“null''和'” turnedoff''不是布尔值,那么他们将被转换为布尔值通过'||'。 – 4castle

回答

6

sessionStorage.clientId === ('null' || 'turnedoff') ? 

应该

sessionStorage.clientId === 'null' || sessionStorage.clientId === 'turnedoff' ? 

因为

'null' || 'turnedoff' 

总是'null',不检查值'turnedoff'

+1

另外:是'null'是一个字符串,还是你想检查'null'?如果它是一个字符串,那么'==='是可以的,但是如果它的'null'使用'=='来代替 - 这样你也可以捕获'undefined':'null === undefined // false' 'null == undefined // true' – Stack

+0

op将“null”写为字符串,并进行严格比较检查。所以这是一个字符串比较。 –

+0

他这样做,它可能不是他真正的 – Stack

2

@Nina Scholz说的是正确的。如果你想获得更简洁,你也可以这样做:

['null','turnedoff'].indexOf(sessionStorage.clientId) >= 0 ? '', sessionStorage.clientId; 
1

尝试以下

(!sessionStorage.clientId || sessionStorage.clientId === 'turnedoff') ? ''