&& (AND)
若第一個表達式為 false ,直接回傳第一個
若第一個表達式不為 false ,回傳第二個
|| (OR)
若第一個表達式為 true , 則回傳第一個
否則回傳第二個
! (NOT)
!真值 --> 假值
!假值 --> 真值
// && (AND)
// 第一個假值 回傳第一個
console.log( 0 && 1);
// 第一個真值 回傳第二個
console.log( 1 && 0);
// || (OR)
// 第一個假值 回傳第二個
console.log( 0 || 1);
// 第一個真值 回傳第一個
console.log( 1 || 0);
// ! (NOT)
console.log(!0); // true
console.log(!1); // false
console.log(![]); // false
ex:
var originCash = 500;
function updateMoney(cash){
// 若 updateMoney 沒有傳參數進來 cash 為undefined (假值)
// 所以 當第一個表達式為 falsy , 執行第二個表達式
cash = cash || 300;
var money = cash + originCash;
console.log(money);
}
updateMoney();
這時候
我們想傳 0 進去 , 但會被判斷假值,而執行 300
那要怎麼解決呢??
可用三元運算子
var originCash = 500;
function updateEasyCard(cash) {
cash = parseInt(cash);
console.log(cash);
// 當 cash 是數值或為 0 時,使用 cash 的數值
// 如果 cash 是 NaN 時,則直接套用 500
cash = (cash || cash === 0)? cash: 500;
var money = cash + originCash;
console.log('我有 ' + money + ' 元');
}
updateEasyCard(0);
這裡總結前幾篇的介紹
var a = 1;
var b = 2;
var c = 0;
// && 2元運算子 由左至右
// 所以執行順序是
// a && b 1 && 2 回傳 2
// 2 && c 2 && 0 回傳 0
console.log(a && b && c); // 0
var a = 1;
var b = 2;
var c = 0;
// && 優先性 比 || 高
// c || 0 || a
// 0 || a
// 1
console.log( c || c && c || a); //1
var a = 1;
var b = 2;
var c = 0;
// && 優先性 比 || 高
// 2 || 0
console.log( a && b || c && a); // 2
// 加號優先性較高
// 2 === 1
// 所以為 false
var a = 1 + 1 === 1 ;
// 1000 < 10000 true
// true < 10
// true 轉型成數值 1
// 1 < 10
// 所以為 true
console.log( 1000 < 10000 < 10);
var a = '1';
var b = 2;
// a 轉型成數值
// 1 < 2 false 執行 sum(a , b)
// '1' + 2 --> 12 (字串和數值相加 會轉成字串)
var c = (a > b) ? a * b : sum(a , b);
function sum(a , b){
return a + b ;
}
console.log(c ,typeof c); // 12 string
那今天的介紹就到這裡
若有任何問題 或 內容有誤
可以跟我說唷