MDN上的解釋為:三元運算子接受兩個運算元作為值且一個運算元作為條件。如果條件為 true,運算子回傳值1, 否則回傳值2。
白話文一點來說就是if else的簡潔寫法,他的語法是:
條件 ? 值1 : 值2
//問號前面是條件,冒號前面是true,後面是false
比較簡單的範例如下,這段程式的條件是age是否有大於 18,如果大於,status就會等於成人,如果age沒有大於18,就等於小孩
let age = 10let status = (age >= 18) ? ‘成人’ : ‘小孩’;console.log(status) //小孩
另一種類似的範例,跟上面有點像,但這邊先創造一個 object ,再透過三元運算子去修改裡面的值
const adult = { gender: ‘male’, age: 20, driver: null};adult.driver = adult.age >=18 ? ‘Yes’ : ‘No’;console.log(adult)
//{ gender: 'male', age: 20, driver: 'Yes' }
接下來看一個稍微進階的Nested Ternary
let isFemale = false;
let isMale = true;
let price = isFemale ? 100 : isMale ? 200: 50console.log(price);
// 200
在price的部分會先判斷的是isFemale,因為前面有宣告為false,所以會進到 判斷isMale,而前面有宣告為true,所以會看冒號前面的值=200,因此答案為200
接下來就是我會想要了解三元運算子的原因:作業會用到
而這段程式碼代表的是如果搜尋清單如果有東西(true),data就放filteredMovies,如果是空的(false),就放movies,這段當然也可以用if else來寫,但是用三元運算子就會簡單得多了
const movies = []; //電影總清單
let filteredMovies = []; //搜尋清單
const data = filteredMovies.length ? filteredMovies : movies;
參考資料:MDN