javascript_basic 지식의 조건부 판단

WBOY
풀어 주다: 2016-05-16 19:18:29
원래의
1084명이 탐색했습니다.

JavaScript는 브라우저에서 실행할 수 있는 스크립트 언어입니다(C, C#, JAVA에 비해). 컴퓨터 언어인 한 조건부 판단이 사용됩니다. JavaScript는 "약한" 언어입니다. 언어, 조건부 판단은 종종 혼란스럽습니다. 특히 다른 강력한 언어에 대한 프로그래밍 경험이 있는 사람들에게는 더욱 불합리합니다! 전문가와 혼란스럽지 않은 사람들을 놀리지 마십시오. 나 자신도 한동안 우울했습니다. 먼저 예제를 작성해 보겠습니다.

var s = "meizz";
if (s && s==true)
{
Alert("Is true")
}

위 코드의 결과가 맞는지 아닌지에 관계없이 변수 s에 문자형을 할당하고 이후의 if 조건부 판단에서는 변수 s를 직접 판단식으로 써줍니다. 네, 만약에 강력한 언어에서 문자 변수를 다루려면 그 유형이 문자인지 또는 변수의 값이 특정 문자열과 같은지 판단해야 합니다. 그러나 JavaScript에서는 유형 판단(typeof)과 값이 없습니다. . 판단(==) 그냥 거기 앉아 있으면 조건부 판단 표현으로 쓸 수 있어요. 물론 이런 종류의 조건식만으로는 단순한 문자변수가 아니라 숫자변수, 객체, 함수, 메소드 등이 될 수도 있다. 이것이 바로 이 구문이 매우 혼란스러운 이유입니다.

테스트하고 통계를 만들었습니다. JavaScript에서는 비어 있지 않은 "" 문자열, 0이 아닌 숫자, null이 아닌 개체, 정의되지 않은 개체 속성 및 Boolean true를 다음과 같이 개별적으로 사용할 수 있습니다. 판단의 표현식이 JavaScript에 의해 참으로 간주되면 그렇지 않으면 거짓으로 간주됩니다.

그 이유는 JS 스크립트에는 강력한 변수 유형이 없기 때문입니다. 첫 번째 문장에 값을 할당하면 다음 문장에서 var s = "meizz"; s = function( ){}; 중간에 유형 변환이 없으면 이러한 작성 방법은 강력한 언어에서는 상상할 수 없고 심지어 반항적이지만(이 구문은 전혀 지원되지 않습니다) JS 스크립트에서는 매우 자연스럽습니다. 그 이유는 필수 변수 유형이 없기 때문입니다. 변수 유형은 동적이므로 변수 자체에는 유형이 없지만 변수의 값에는 유형이 있습니다. 하하, 여기에는 다른 모듈이 포함됩니다. 변수 유형에 대해 논의하기 위해 다른 기사를 작성하겠습니다.

이렇게 말하면 if (s &&의 판단 표현을 이해하는 것은 어렵지 않습니다. 같은 이유로 s(){} 함수를 사용한 다음 if (s && .... Or var s = document.getElementById("ObjectId"); if (s && .... 이 구문은 JS 스크립트에서 정확합니다. 판단 결과는 위의 통계 결과를 참조할 수 있습니다.

이제 위의 몇 줄의 코드 결과에 대해 논의해 보겠습니다. 다중 조건문 표현식의 결과를 결합한 연산은 "and"와 "or"뿐입니다. 왜냐하면 "not"은 단항 연산자이기 때문입니다. , it only if (!s)와 같은 단일 값의 경우... 조건식이 두 개 이상인 경우 조건식의 결과는 AND 및 OR뿐입니다. 위의 조건식은 (s && s입니다. ==true)는 AND 연산(하나의 값이 false이면 값이 false)이나 연산(하나의 값이 true이면 값이 true)의 두 조건식의 복합 판단입니다. 나는 이러한 연산의 세부 사항을 모릅니다. 교과서가 내 펜보다 훨씬 좋습니다. 이제 이 판단을 분석해 보겠습니다. 이것은 문자 값이 ""가 아니기 때문에 "AND" 연산입니다. , 는 확실히 JS에서 고려됩니다. 두 번째 판단 표현식은 s==true입니다. 물론 이는 "AND" 연산이므로 값이 false입니다. 조건부 판단 표현식이 거짓이므로 경고()가 실행되지 않습니다.

셋째, 선언(var) 및 할당이 없으면 JS에서 정의되지 않은 변수 오류가 발생합니다. 변수를 판단하는 데 직접 사용합니다. 예를 들면 다음과 같습니다.

if (ss) Alert("조건부 판단 결과가 true입니다!")

실행 시 오류가 발생합니다. 이 코드는 ss 변수가 선언되고 값이 할당된 적이 없기 때문에 위에서 언급한 null "" undefine과 동일하지 않습니다. 하나는 작성할 때 실수로 선언하지 못한 경우입니다. 코드를 직접 작성하고 다른 하나는 웹 페이지에 없는 컨트롤을 조작하기 위해 ID를 직접 사용하는 것입니다. if (InputId.value!="") ... 와 같은 텍스트 상자가 없는 경우. 이 스크립트 작업을 실행할 때 웹 페이지의 id="InputId" 또는 텍스트 상자가 브라우저에 의해 로드되지 않으면 정의되지 않은 변수 오류가 발생합니다.

결과는 다음과 같습니다. 첫 번째 경우.if (typeof(ss)=="undefine") Alert("변수가 정의되지 않았습니다"); 두 번째 경우에는 ID를 사용하여 개체를 직접 참조하지 않고 표준 개체 참조를 사용합니다. 예:

var e = document.getElementById("InputId"); //IE는 document.all.InputId를 사용하는 데 사용됩니다.
if (e && e.value!="");// . .....

이렇게 하면 이런 오류가 발생하지 않습니다.

그래서 어떤 사람들은 위의 코드를 이렇게 작성해야 한다고 하는데 왜 직접 작성하면 안 되는지

if(document.getElementById("InputId").value != "") ;// ....

이 코드가 더 간결하지 않나요? 코드가 간소화되었지만 오류도 나타났습니다. 웹 페이지에 그러한 개체가 없거나 스크립트가 실행될 때 개체가 로드되지 않은 한 오류가 보고됩니다. document.getElementById("InputId")는 null 값을 반환했으며 null에는 분명히 값 속성이 없으며 내 코드에서도 e.value를 사용하여 속성을 가져왔지만 오류가 보고되지 않았습니다. C 시리즈 언어는 다중 조건식의 또 다른 속성입니다. 여러 조건식을 조합하여 판단할 때 먼저 첫 번째 조건식을 살펴보고 조건이 충족되면 두 번째 판단식, 즉 세 번째 판단식을 판단하지 않습니다. 조건부 판단이 기준을 충족하지 못하면 두 번째 판단이 판단되며 끝까지 계속됩니다. if(e && e.value!="")는 두 판단을 합친 판단입니다. 이는 하나의 판단이 거짓인 한 전체 값이 거짓입니다. 첫 번째 판단 표현식 e는 존재하지 않거나 로드되지 않았기 때문에 null을 반환합니다. 이렇게 하면 후속 판단 없이 전체 결합 판단의 결과가 거짓으로 나올 수 있으므로 시스템에서는 더 이상 다음 문장의 e.value를 판단해 봅시다. 이는 B 계열 언어와 다르기 때문에 특별한 주의가 필요합니다. 언어 B에서 if e 및 e.value!="" then과 같은 문은 먼저 모든 판단을 수행한 다음 결합된 "AND" 연산을 수행하는 것입니다. 따라서 이 코드는 JS에서는 정확하지만 VBS에서는 정확하지 않을 수 있습니다.

네, 제가 배도 별로 없고 글도 서툴러서 이 정도만 썼습니다. 모두가 고쳐주셨으면 좋겠습니다!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!