逻辑运算子
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); // 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
那今天的介绍就到这里
若有任何问题 或 内容有误
可以跟我说唷
<<: 鼠年全马铁人挑战 WEEK 38:封包测试工具 - Charles (三)
>>: [C#] LeetCode 4. Median of Two Sorted Arrays 浅谈中位数
GitHub Repo https://github.com/b2etw/Spring-Kotlin...
小弟弟第一次发文, 如有不好的地方 请多包涵 (≧∀≦)ゞ 由於我是vs code 使用爱好者 所以...
前言 前一天我们在 K8s Cluster 建置好了 ArgoCD 服务,今天就来实际操作看看,透过...
什麽是网站推播通知 推播通知不管对 App 或是网站来说都是一种重新吸引用户来使用 App 的方法,...
发现昨天的介绍中漏掉新增 Todo 的画面是怎麽来的,补充一下。 安装 React Material...