逻辑运算子
所谓的逻辑运算子,包含 &&
, ||
, !
这三种。
分别的定义如这个连结所描述。
&&
&&
是 二元的运算子,相依性是由左到右,所以先检查左边的表达式,如果左边的表达式是 falsy 的话就回传 falsy 的结果。 如果不是的话就直接回传右边的表达式的结果。
expr1 && expr2
console.log(1 && 0 && undefined) // 0
||
||
也是 二元的运算子,相依性也是由左到右,一样先检查左边的表达式,但跟&&
判断概念相反,如果左边的表达式是 truthy 的话就回传 truthy 的结果。 如果不是的话就直接回传右边的表达式的结果。
console.log(0 || 3 || undefined) // 3
!
!
就是代表反转布林值的概念,例如说:
console.log(!1); // falseconsole.log(!0); // trueconsole.log(![]); // false
以上就是三个逻辑运算子的介绍。
接下来请大家看看下面这段程式码:
var originCash = 500;function updateEasyCard (cash) { var money = originCash + cash; console.log('我有 ' + money + ' 元!');}updateEasyCard(100);// 我有 600 元!
很明显这个是一个透过传入function给参数的时候,会印出现在储值了多少钱的程式。
但是如果今天我的 updateEasyCard(100);
不传入 100 的数字的话,会发生甚么事情呢
大家可以试试看,应该会看到结果是 我有 NaN 元!
。
而这是因为传入的 cash 是 undefined
,undefined + 500 回传是 NaN。
然后要避免这样的状况我们就可以利用刚刚的 ||
来设定一个预设值
var originCash = 500;function updateEasyCard (cash) { cash = cash || 100; var money = originCash + cash; console.log('我有 ' + money + ' 元!');}updateEasyCard(100);// 我有 600 元!
这样执行就没有问题了! 也可以正常印出600
但是但是但是!!!
如果今天 cash 是 0 的话呢? 因为 0 是 falsy,所以还是会跑到 100。 但我就真的想要传0进去怎么半?
其实可以用到之前学到过的 三元运算子
把程式改写成下面这样就可以传入0进去,也可以避免没有传值得时候的问题。
var originCash = 500;function updateEasyCard (cash) { cash = (cash || cash === 0) ? cash : 100; var money = originCash + cash; console.log('我有 ' + money + ' 元!');}updateEasyCard(100);// 我有 600 元!
这样就可以噜~!
以上就是关于逻辑运算子、如何预设变数的值,以及遇到预设值要传0的时候该怎么半的解套方式。
今天的文章就到这边,希望对大家有帮助~汪汪