三目運算符(三元運算符)
三目運算符:運算符需要三個操作
語法:表達式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));
先對運算符右邊進行運算