>  기사  >  웹 프론트엔드  >  JavaScript의 삼항 연산자는 무엇입니까?

JavaScript의 삼항 연산자는 무엇입니까?

青灯夜游
青灯夜游원래의
2021-04-01 17:31:113288검색

Javascript에는 간단한 선택 구조에 사용할 수 있는 삼항 연산자 "? ... :"만 있습니다. 기본 구문은 "부울 표현식? 문장1 : 문장2"입니다. 문장1, 그렇지 않으면 문장2가 실행됩니다.

JavaScript의 삼항 연산자는 무엇입니까?

이 튜토리얼의 운영 환경: 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不为undefinedNaN0null的时候执行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 : &#39;&#39;
  }

居然报错了! 为什么报错,我们会仔细看一下上面的多个判断

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++

Whenexpression의 값이 true이면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.