Javascript에는 간단한 선택 구조에 사용할 수 있는 삼항 연산자 "? ... :"만 있습니다. 기본 구문은 "부울 표현식? 문장1 : 문장2"입니다. 문장1, 그렇지 않으면 문장2가 실행됩니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 5, Dell G3 컴퓨터.
javascript 삼항 연산자
자바스크립트의 삼항 연산자를 판단에 사용할 때 기본 구문은 다음과 같습니다. expression ? 문장1 : 문장2
expression ? sentence1 : sentence2
当expression
的值为真时执行sentence1
,否则执行 sentence2
, 请看代码
var b = 1, c = 1 a = 2; a >= 2 ? b++ : b--; b // 2 a < 2 ? c++ : c--; c // 0
从上面代码中,我们暂时会认为三目运算符相当于if + else(下面再详聊)
if(expression){ sentence1; } else { sentence2; }
当expression
为真,即expression
不为undefined
,NaN
,0
,null
的时候执行sentence1
,否则执行sentence2
。
既然这样的功能和if相同,为什么还要使用它?首先,在逻辑多次判断的时候,三目运算符逻辑更简洁:
expression1 ? sentence1 : expression2 ? sentence2 : expression3 ? sentence3 : ...
只要任意一个expressionN的判断为真,那么sentenceN立即执行,这个判断结束,后面的任何判断不再执行。而如果我们写成if-else
if(expression1){ sentence1; } else if(expression2){ sentence2; } else if(expression3){ sentence3; } ...
这样书写逻辑看起来比较心累,所以在jquery和zepto源码中,我们会大量看到三目运算符的应用。
赋值
另一个经典的应用场景在于赋值,var param = expression ? value1 : value2
,这个相信大家经常用到
var b, c = 1; var a = b ? 2 : 1; a // 1 var a = c > 0 ? 2 : 1 a // 2
再谈判断
有一天写了这样的代码
function xx(){ var a = 1, b = 3; a < b ? return false : '' }
居然报错了! 为什么报错,我们会仔细看一下上面的多个判断
expression1 ? sentence1 : expression2 ? sentence2 : expression3 ? sentence3 : ...
只要有一个expressionN成立,就马上跳出。原因是什么呢? 我们可以猜想是因为三目运算符return了sentenceN,所以判断立即跳出。赋值的用法也一样,之所以报错的原因是
if(expression){ return (return 2); }
这样的写法肯定报错了。那么如果我们对上面的解释有疑问,我们可以用这样的代码来证明:
var a = 1, b = 2; var c = b > 1 ? a++ : 0; c // 1
c为什么是1,因为n++是在执行完表达式后再加1,如果return a++
sentence1
이 실행되고, 그렇지 않으면 sentence2
가 실행됩니다. 코드rrreee를 보세요. 일시적으로 세 눈 연산자는 if + else와 동일하다고 생각합니다(자세한 내용은 아래 참조) rrreee
expression
이 true인 경우, 즉 expression
은 가 아닙니다. >정의되지 않음
, NaN
, 0
, null
, sentence1
실행, 그렇지 않으면 sentence2 실행
. 🎜🎜if와 동일한 기능인데 왜 사용하나요? 우선, 논리가 여러 번 판단되면 삼항 연산자 논리가 더 간결해집니다. 🎜rrreee🎜 어떤 식N의 판단이 참인 한 문장N은 즉시 실행되고 이 판단은 종료되며 후속 판단은 없습니다. 더 오래 실행되었습니다. 그리고 if-else🎜rrreee🎜로 작성하면 이렇게 로직을 작성하는 것이 피곤할 것 같아서 jquery와 zepto 소스코드에서 삼항연산자의 응용을 많이 보게 될 것입니다. 🎜🎜🎜🎜Assignment🎜🎜🎜🎜 또 다른 전형적인 애플리케이션 시나리오는 var param = 표현식 ? value1 : value2
할당입니다. 이 🎜rrreee🎜🎜🎜다시 협상합시다🎜🎜 🎜🎜 어느 날 이런 코드를 작성했는데🎜rrreee🎜실제로 오류가 보고되었습니다! 왜 오류를 보고한 걸까요? 위의 여러 판단을 자세히 살펴보겠습니다🎜rrreee🎜N 표현식이 하나라도 참이면 바로 튀어나옵니다. 이유는 무엇입니까? 삼항 연산자가 문장 N을 반환하므로 판단이 즉시 튀어나오기 때문이라고 추측할 수 있습니다. 할당의 사용법은 동일합니다. 오류가 보고되는 이유는 🎜rrreee🎜와 같이 쓰면 반드시 오류가 보고되기 때문입니다. 따라서 위 설명에 대한 질문이 있는 경우 다음과 같은 코드를 사용하여 증명할 수 있습니다. 왜 🎜rrreee🎜c가 1인 이유는 n++이 표현식 실행 후 1을 더하기 때문입니다. return a++
인 경우 먼저 반환하고 그런 다음 1을 더하면 c는 1이 됩니다.🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜위 내용은 JavaScript의 삼항 연산자는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!