Javascript 进阶 3-9 逻辑运算子及函式预设值

逻辑运算子

所谓的逻辑运算子,包含 &&, ||, ! 这三种。

分别的定义如这个连结所描述。

http://img2.58codes.com/2024/20121770gwbKhzDGfX.png

&&

&& 是 二元的运算子,相依性是由左到右,所以先检查左边的表达式,如果左边的表达式是 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的时候该怎么半的解套方式。

今天的文章就到这边,希望对大家有帮助~汪汪


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章