때때로 jQuery 프레임워크나 다른 js 플러그인에서 " && " 및 " || "를 많이 찾을 수 있습니다. 그렇다면 이 두 기호는 무엇을 의미할까요? 사용하는 방법? 아직은 좀 더 깊이 파고들어볼 필요가 있다고 생각합니다.
1. 원리:
&& 연산자 특징: 논리연산식 중 하나라도 false이면 false의 값을 그대로 따릅니다. 만약 그것이 거짓이라면, 그보다 먼저 취해질 것입니다.
|| 연산자 특징: 논리연산식 중 하나라도 true이면 true 값을 먼저 가져오고, false이면 가져옵니다. 마지막으로 가져 가십시오.
JS 논리 연산에서는 0, "", null, false, undefine, NaN의 5가지 데이터 유형이 false로 판단된다는 것을 알고 있습니다. 그런 다음 js의 논리적 작동 중에 위의 원칙과 다섯 가지 데이터 유형을 기반으로 해당 판단을 내릴 수 있습니다. DEMO로 바로 이동...
2. 원본 DEMO:
먼저 문제를 보여주세요! ! !
학생의 성적을 기준으로 성적을 판단하려면 예를 들어 90점은 A, 80점은 B, 60점은 C, 나머지는 D를 의미합니다.
그러면 이렇게 할 수 있습니다:
JS 코드:
var score = 90; var grade = ''; if(score === 90){ grade = "A"; }else if(score === 80){ grade = "B"; }else if(score === 60){ grade = "C"; }else{ grade = "D"; } console.log("当前学生等级为:" + grade); // 当前学生等级为:A
또는 다음:
var score = 90; var grade = ''; switch(score){ case 90: grade = "A"; break; case 80: grade = "B"; break; case 60: grade = "C"; break; default: grade = "D"; break; }; console.log("当前学生等级为:" + grade); // 当前学生等级为:A
3. DEMO 최적화:
사실 " && "와 " || "를 사용하면 위와 같이 번거로울 필요가 없습니다.
var score = 90; var grade = (score===90 && 'A') || (score===80 && 'B') || (score===60 && 'C') || 'D'; console.log("当前学生等级为:" + grade); // 当前学生等级为:A
위 코드는 다음과 같이 이해할 수 있습니다.
score의 값이 90이면 Score===90이라는 논리식이 성립합니다. (즉, true) 'A'의 대입 연산이 실행되고 이후의 "||" 논리 연산도 무시될 수 있습니다. ("||" 연산자의 특성은 일단 이전 연산자가 true이기 때문입니다) , 나중에 실행할 필요가 없습니다).
score의 값이 90이 아니면 논리식 Score===90은 성립하지 않습니다(즉, false입니다). "&&" 연산자의 특성에 따르면, "(score=== 90 && 'A')" 이 코드는 'A'의 후속 할당 작업을 실행하지 않는다는 것을 알고 있습니다. 동시에 전체 코드 "(score===90 && 'A') 때문입니다. "가 false이면 "||" 특성에 따라 전체 논리식이 계속 실행됩니다.
비유적으로, 이전 논리식이 모두 참이 아닌 경우 "||"의 특성에 따라(모두 거짓인 경우 마지막 것을 취함) 최종 등급 할당은 " 디".
JSON 형식을 사용하여 위의 논리 연산을 처리할 수도 있습니다.
var score = 90; var grade = {90:"A", 80:"B", 60:"C"}[score] || 'D'; console.log("当前学生等级为:" + grade); // 当前学生等级为:A
여기서 "JSON 개체일 때 JSON 개체의 속성 읽기를 사용합니다. 속성 값 " 존재하는 경우(true) 해당 속성의 키 값(A, B 또는 C)을 가져옵니다. JSON 객체에 점수 속성 값이 존재하지 않는 경우 "||" 이후의 내용이 실행됩니다. 즉, 등급에는 "D" 값이 할당됩니다.
물론 위의 수치 비교는 그리 실용적이지 않다는 것을 알 수 있습니다. 예를 들어 학생의 점수가 85점인 경우 성적도 "D"가 되며 이는 명백히 부적절합니다! ! !
그래서 위 코드를 더욱 최적화하고 값의 "동등 비교"를 "범위 간격 비교"로 변경할 수 있습니다.
var score = 85; var grade = (score>=90 && 'A') || (score>=80 && 'B') || (score>=60 && 'C') || 'D'; console.log("当前学生等级为:" + grade); // 当前学生等级为:B
위 내용은 이 글의 전체 내용입니다. 이 글의 내용이 모든 분들의 공부나 업무에 조금이라도 도움이 되었으면 좋겠습니다. !
JavaScript의 “ && ” 및 “ || ”에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!