![](/img/trans.png)
[英]JavaScript if/else Statement assign variable true or false
[英]JavaScript true false not executing correctly in if else statement
出於某種原因,當我使用真/假值並檢查其中至少一個值是否為真時,if/else 語句無法正常工作。 我有這個:
$scope.checkValues = function (qId) {
var airport = $scope.airports[0].questID;
var destAirport = $scope.destAirports[0].questID;
var airportVal = isFalseOrUndefined($scope.answers[airport]);
var destAirportVal = isFalseOrUndefined($scope.answers[destAirport])
if (airportVal == false || destAirportVal == false) {
$surveyNav.skipPage = true;
}
}
function isFalseOrUndefined(val) {
if(val == null || val === false) {
return true;
} else {
return false;
}
}
在下圖中,如您所見, airportVal
值為 true,同一場景中destAirportVal
的另一個值為 true,但我仍然能夠正確進入 if 條件並設置范圍值。
有人看到任何問題嗎?
在 Javascript 中檢查相等性時,您應該使用 === 和 !== 運算符。 Javascript 比較和邏輯運算符
op1 === op2 - 將檢查 op1 是否明確等於 op2
op1 !== op2 - 將檢查 op1 是否不明確等於 op2
另外:你可以濃縮你 isFalseOrUndefined 函數
注 1:您實際上並未檢查 val 是否未定義。 檢查是否未定義: typeof val === 'undefined' 這與檢查變量是否為空不同
注意 2:請記住,您的變量在這里並不完全清楚。 當 $scope.answers[airport] 為 false 或 null 時, airportVal 將等於 true。 這是你的意圖嗎?
$scope.checkValues = function (qId) {
var airport = $scope.airports[0].questID;
var destAirport = $scope.destAirports[0].questID;
var airportVal = isFalseOrUndefined($scope.answers[airport]);
var destAirportVal = isFalseOrUndefined($scope.answers[destAirport])
if (airportVal === false || destAirportVal === false) {
$surveyNav.skipPage = true;
}
}
function isFalseOrUndefined(val) {
return (val === null || val === false);
}
您的函數可能應該做它聲稱要做的事情:
function isFalseOrUndefined(val) {
return typeof val === 'undefined' || val === false || val === null || val === ''/* add this if you think it should be falsy*/;
}
但是,測試!val
應該就足夠了:
$scope.checkValues = function (qId) {
var airport = $scope.airports[0].questID;
var destAirport = $scope.destAirports[0].questID;
if (!airport || !destAirport) {
$surveyNav.skipPage = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.