2014-12-12 1 views
-3

true/false 값을 사용하고 적어도 하나의 값이 true인지 확인하는 경우 어떤 이유로 if/else 문이 올바르게 작동하지 않습니다. 나는이있다 : airportVal이 사실에 대해 당신이 값을 볼 수 아래 이미지에서JavaScript true 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; 
    } 
} 

을, 같은 시나리오에서 destAirportVal에 대한 다른 값은 사실이지만, 나는 아직도 제대로 얻을 수 있어요 if 조건에 적용하고 범위 값을 설정합니다.

enter image description here

는 사람이 어떤 문제를 볼 수 있습니까?

+0

'airportVal'의 값이 true로 표시되지 않습니다. 그리고 나를 믿어 라. 그렇지 않거나'destAirportVal'이 거짓이다. JS는 사용자 환경에서 근본적으로 손상되지 않습니다. – Madbreaks

+0

@Madbreaks 당신이 팝업을 보았다는 사실을 알았습니다. 공항에 마우스를 올려 놓았습니다. var var, 여기에 destAirportVal이있는 다른 프린트 스크린이 있습니다. http://gyazo.com/71dca4342a4166c24c07199d991ef73x, 도움을 청합니다. – Laziale

+0

진실 값에는 아무 것도 정의되어 있지 않습니다. – Jay

답변

-2

함수에서 정의되지 않은 항목과 다른 조건이 이름 상태로 있는지 확인하십시오. 정의되지 않은 값은 모든 값에 재 할당 할 수 있습니다.

value != undefined 내가 이렇게 특히 value != 'undefined'과 동일하지 않습니다 : undefined = true

-2

귀하의 기능은 아마 이렇게 주장하는 일을해야합니다

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; 
    } 
} 
+0

예제에서 IsFalseOrUndefined 함수를 사용합니까? – Laziale

+0

이것은 답변이 아닙니다. 또한 :' ''== false; // true'. "빈 문자열"이 "false 또는 undefined"를 의미하는 방법을 모르십니까? – Madbreaks

+0

* 실제로 코드를 읽었습니까? 추가'='char을 보지 않습니까? 그것은 많은 차이를 만듭니다. – sebnukem

0

Javascript에서 동등성을 검사 할 때 === 및! == 연산자를 사용해야합니다. Javascript Comparison and Logical operators

OP1의 === OP2는 - OP1가

OP1을 OP2에 명시 적으로 동일한 경우 확인합니다 == OP2이 - OP1은 또한

을 OP2에 명시 적으로 동일하지 있는지 확인합니다!을 당신을 응축시킬 수 있습니다. 거짓 오름 정의되지 않은 함수

참고 1 : 실제로 val이 정의되지 않았는지 확인하지 않습니다. 뭔가가 정의되어있는 경우 확인하려면 다음 변수는 여기에 완전히 명확하지 않다 명심 : 대해서 typeof 발은 === 변수가 2

주에게 null의 경우이 검사와 다른 를 '정의되지 않은'. $ 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); 
} 
+0

정의되지 않은 값을 확인하는 것을 잊지 마세요. – Jay

관련 문제