나는 종종 위대한 사람들의 코드에서 많은 약식 조건 표현식 진술을 본다. 이 측면을 소개하는 몇 가지 기사를 읽은 후 3 가지 방법 2 가이 기사 (http://www.thomasfrank.se/3_ways_ways_ways_say_if.html)가 나쁘지 않다고 생각합니다. 이 기사에서 저자는 IF ... Else ...,? : &&/||의 전통적인 표현의 특성과 사용을 요약하고 다음과 같이 요약했습니다.
1. 만약 ... 다른 구조
// r을 0 또는 1 var r = math.floor (2*math.random ()) // a, b 및 c를 r == 0이면 a, b 및 c를 "small"으로 설정하십시오. if (r == 0) {a = "small"} else {a = "big"}; // 방법 2 : 조건부 연산자 var b = r == 0? "작은": "큰"; // 메소드 3 : 및/또는 연산자 var c = r == 0 && "small"|| "큰"; // 변수 알림 (r+""+a+"" "+b+" "+c)의 값을 확인합니다.2. 만약 ... 다른 경우 ... 다른 구조
// r을 0,1,2 또는 3 var r = math.floor (4*math.random ()) // A, B 및 C를 "NADA", "Small", "Big"및 "Muge"로 설정하십시오. // 세 가지 다른 기술을 사용하여 또는 r을 사용하여 // 방법 1 : if ... else var a; if (r == 0) {a = "nada"} else if (r == 1) {a = "small"} else if (r == 2) {a = "big"} else {a = "거대한"}; // 방법 2 : 조건부 연산자 var b = r == 0? "나다": r == 1? "작은": r == 2? "큰": "거대한"; // 메소드 3 : 및/또는 연산자 var c = r == 0 && "nada"|| r == 1 && "작은"|| r == 2 && "big"|| "거대한"; // 변수 알림 (r+""+a+"" "+b+" "+c)의 값을 확인합니다.3. 함수를 실행하십시오
// r을 0,1,2 또는 3 var r = math.floor (4*math.random ())로 설정하십시오. // 글로벌 변수 x와 우리의 네 가지 함수 var x = ""; nada = function () {x+= "nada!"}; small = function () {x+= "small!"}; big = function () {x+= "big!"}; muge = function () {x+= "muge!"}; // 세 가지 다른 기술을 사용하여 r // 값에 따라 특정 함수를 호출하십시오. // 방법 1 : if .. if ... else ... else ... else ... else (r == 0) {nada ()} else if (r == 1) {small ()} else if (r == 2) {big ()} else {mign ()}; // 방법 2 : 조건부 연산자 r == 0? nada () : r == 1? small () : r == 2? big () : 거대한 (); // 메소드 3 : 및/또는 연산자 r == 0 && (nada () || true) // nada () 함수가 반드시 true를 반환 할 필요는 없습니다. 후속 논리 또는 ||를 보장하기 위해 판단은 실행되지 않으며, 진정한 값을 반환해야하며, 아래에서도 마찬가지입니다 || r == 1 && (small () || true) || r == 2 && (big () || true) || 거대한(); // 변수 ALERT (R+""+X)의 값을 확인합니다.4. 코드를 실행하십시오
// r을 0,1,2 또는 3 var r = math.floor (4*math.random ())로 설정합니다. // 전역 변수 x var x = ""; // 세 가지 다른 기술을 사용하여 r //의 값에 따라 다른 코드를 실행하는 // 방법 1 : if .. if ... else ... if ... if (r == 0) {nada! "} else if (r == 1) {x+="small! "} else if (r == 2) {x+="big! "else {x+="}; // 방법 2 : 조건부 연산자 r == 0? function () {x+= "nada!"} () : r == 1? function () {x+= "small!"} () : r == 2? function () {x+= "big!"} () : function () {x+= "muge!"} (); // 메소드 3 : 및/또는 연산자 r == 0 && (function () {x+= "nada!"} () || true) // 누군가가 여기에 익명 함수가 불필요하다고 지적했으며, 이는 하나의 실행 가능한 코드 만있는 경우에도 여전히 유명한 함수는 좋은 || r == 1 && (function () {x+= "small!"} () || true) || r == 2 && (function () {x+= "big!"} () || true) || function () {x+= "muge!"} (); // 변수 ALERT (R+""+X)의 값을 확인합니다.이 온라인 기사에서 저자의 초점은 코드의 부족에 중점을 두므로 일반적으로 저자는? : 운영자를 사용하는 것을 선호하며 && || 방법은 몇 글자를 더 입력해야하므로 더 성가신 것처럼 보입니다. 함수를 실행할 때는 전통적인 if ... else를 사용하는 것이 더 편리합니다. 의견에 따르면, 일부 사람들은 클라이언트 사이드 코드를 더 단순하고 짧게 만드는 것이 눈에 띄지 않는 실행 효율성을 향상시키는 것보다 더 효과적이라고 제안했습니다. 이는 일부 프로그램에서도 정확합니다. 따라서 운영 효율성은 UA마다 다를 것이라는 점은 말할 것도없이, 이러한 진술 자체의 운영 효율성보다 공식적인 관점에서 조건 진술을 처리하기 위해보다 간결한 형태를 선택하는 것이 더 중요 할 수 있습니다.
If ... Else 또는? :를 사용하는 두 가지 조건 만 있다는 판단에서 && 및 ||의 작동 방법은 매우 간단합니다. 조금 복잡합니다. 그러나 실제로 다음 두 가지 기본 원칙을 이해하는 한 모든 문제가 해결됩니다.
첫째, 논리 및 && 및 논리를 사용할 때 또는 || 연산자, 방향은 왼쪽에서 오른쪽으로입니다. &&는 첫 번째 값이 false (또는 null/undefined/0/""/nan 등과 같이 False로 변환 될 수있는 값 (또는 false로 변환 될 수있는 값)이 중지되고 첫 번째 값이 true (또는 true로 변환 할 수있는 값)가 중지됩니다. 전체 조건에 의해 반환 된 값은 마지막으로 감지 된 조건의 값이며 반드시 true/false는 아닙니다.
둘째, 논리는 논리 또는 연산자보다 && 운영자보다 우선 순위가 높습니다.
첫 번째 원칙에 따라 r == 0 및 "small"은 왼쪽에서 오른쪽으로 순서대로 계산됩니다. r == 0이 true 인 경우 "작은"이 감지됩니다. "Small"은 비어 있지 않은 문자열이므로 C는 "Small"으로 간주됩니다. r == 0이 false 인 경우, 두 번째 조건은 논리의 "큰"감지 또는 || 직접 시작되었습니다. 마찬가지로, C는 "큰"것으로 간주되어야합니다. 두 번째 원칙에 따르면 위의 코드에서 변수 C를 작동하는 동안 괄호를 추가 할 필요가 없습니다.
? : & &, ||를 사용하기 때문에 연산자는 특정 프로그램에서 코드를 단순화하는 데 역할을 할 수 있으며 jQuery와 같은 라이브러리 소스 코드에서는 매우 중요합니다. 요약하면,이 유형의 연산자는 두 가지 주요 응용 프로그램을 가지고 있습니다. 하나는 값을 할당하거나 반환하는 것입니다. 다른 하나는 코드를 실행하는 것입니다 (현재는 분류).
과제의 사용은 jQuery 또는 기타 라이브러리의 모든 곳에 있습니다. 전형적인 응용 프로그램은 인터페이스에 대한 기본값의 기능을 구현하는 것입니다. 우리는 다음과 같은 코드를 쉽게 쓸 수 있습니다.
var myobj = function (옵션) {var color = 옵션 .color || this.defaults.defaults; var backgroundcolor = 옵션 .BackgroundColor || this.defaults.backgroundcolor;}; myobj.prototype.defaults = {color : "#393939", backgroundcolor : "#222"} var myins = new myobj ({컬러 : "#80ff80"}); console.log ( "color :"+myins.color+","+myins.color+";작동하는지 : 또는 && 및 ||, if ... ({} 번호로 랩핑)의 타고난 코드 블록 함수가 없기 때문에 다음과 같은 단일 라인 코드 만 실행할 수 있습니다.
(xmlhttprequest.readystate == 4 && xmlhttprequest.status == 200)? 경고 ( "성공!") : Alert ( "실패!");
따라서 실행 해야하는 여러 코드가있는 경우 익명 기능을 사용해야합니다. 좋다:
(xmlhttprequest.readystate == 4 && xmlhttprequest.status == 200)? function () {alert ( "success!"); var a = 100; 경고 (a);} : Alert ( "실패!");jQuery 1.7.1 소스 코드에는 2643 라인과 같은 약어가 너무 많습니다.
// 부울 속성에 대한 후크 부문 boolhook = {get : function (elem, name) {// 부울 속성을 해당 속성으로 정렬합니다. // 일부 부울이 지원되지 않는 속성 존재로 돌아갑니다. 반품 속성 === True || 속성 타입! == "부울"&& (attrnode = elem.getAttributeNode (name)) && attrnode.nodevalue! == false? name.tolowercase () : 정의되지 않은; }, set : function () {...}}우리는 계속 배우고 요약 해야하는 것 같습니다.
위의 JavaScript 약어 조건부 문장 (권장)은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.