2016-05-13 40 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') ? ''