JavaScript三元運算符以及運算符順序


三目運算符(三元運算符)

三目運算符:運算符需要三個操作

語法:表達式1?表達式2:表達式3

表達式1是一個條件,值為Boolean類型

若表達式1的值為true,則執行表達式2的操作,並且以表達式2的結果作為整個表達式的結果;

若表達式1的值為false,則執行表達式3的操作,並且以表達式3的結果作為整個表達式的結果;

示例:

'0'和's'的布爾值都是true,所以返回第二個表達式的值 'hello'

數字 0的布爾值為false,所以返回第三個表達式的值 'world'

案例:數字補0

用戶輸入數字,如果數字小於0,就在前面補0,例如01,09,如果數字大於10,就不需要補0,例如14

  1、用戶輸入0~59之間的數字

  2、如果數字小於10,就在數字前面補0,否則不作操作

  3、用一個變量接收返回值並且輸出

 

var num = prompt('請輸入0~59之間的一個數字');
if(num<10){
   var zero = '0' + num;
   alert(zero);
}

 

或者是

var num = prompt('輸入數字');
num<10?alert('0'+num):alert(num);

 

 

 三元運算符與If...else語句的區別:

一般來說三元條件表達式與if...else語句有相同的表達效果,前者可以表達的后者同樣也可以表達;

兩者最大的不同之處在於if...else是語句沒有返回值,三元表達式有返回值;

所以在需要返回值的場合,只能使用三元表達式,而不能使用if...else語句;

在下面的代碼中,console.log()方法的參數必須為表達式,所以只能使用三元表達式。

 實例:(條件運算符的嵌套)

輸入一個考試成績,判斷:

如果成績在 80 以上,則輸出  優秀;

如果成績在 60 以上,則輸出  合格;

否則輸出:不合格。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
    var score=85;
    var result=score >= 80? "優秀" : (
        score>=60?"合格":"不合格");
    console.log (result);
    </script>
</body>
</html>


運算順序

一、,運算符

使用逗號(,)可以分割多個語句,一般可以在聲明多個變量時使用

 使用,運算符同時聲明多個變量並賦值。

 

二、運算符的優先級

在JS中各種運算符的優先級是不一樣的,優先級高的運算符先執行,優先級低的運算符后執行。

1、和數學中的一樣,JS運算符中的優先級也會按照先乘除后加減的順序比較。

如果優先級一樣高,就從左往右算

2、除了加減乘除這樣簡單的運算外,還有一些比較復雜的運算符

var x = 1;
var arr = [];
var y = arr.length <= 0 || arr[0] === undefined ? x : arr[0];

這里面用到的運算符是比較復雜的,這五個運算符的優先級從高到低依次為:

小於等於( <= )、嚴格相等( === )、或( || )、三元( ?: )、等號( = )

相當於:

var y = ((arr.length <= 0) || (arr[0] === undefined)) ? x :arr[0];

 

三、圓括號

圓括號可以提高運算的優先級,因為圓括號的優先級是最高的,圓括號中的運算符會第一個執行

 因為使用了()所以加號運算符先於乘法運算

圓括號的作用:圓括號不是運算符(不求值,只改變運算優先級),而是一種語法結構,

1、把表達式放在圓括號內提升運算優先級;2、放在函數后面,調用函數。

 

四、左結合和右結合

左結合

對於優先級別相同的運算符,一般情況下,總是按照從左到右的順序,這叫做運算符的左結合

右結合

少數運算符的運算順序是按照從右向左的順序來計算的;

最主要的是:1、賦值運算符(=);2、三目運算符(?:)

w = x = y = z;
q = a ? b : c ? d : e ? f : g;

 等價於

w = (x = (y = z));
q = a ? b : (c ? d : (e ? f : g));

 先對運算符右邊進行運算

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM