逻辑运算子
MDN : https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/%E9%81%8B%E7%AE%97%E5%AD%90/%E9%82%8F%E8%BC%AF%E9%81%8B%E7%AE%97%E5%AD%90
&& (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); // trueconsole.log(!1); // falseconsole.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 // 1console.log( c || c && c || a); //1
var a = 1;var b = 2;var c = 0;// && 优先性 比 || 高// 2 || 0console.log( a && b || c && a); // 2
// 加号优先性较高// 2 === 1 // 所以为 falsevar a = 1 + 1 === 1 ;
// 1000 < 10000 true// true < 10 // true 转型成数值 1// 1 < 10// 所以为 trueconsole.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
那今天的介绍就到这里
若有任何问题 或 内容有误
可以跟我说唷