Skip to content

逻辑中断

在之前那篇具名函数的文档中, 我们写了一个简单的加法函数, 如下:

js
function getSum(Num1 = 0, Num2 = 0) {
    console.log(Num1 + Num2)
}

getSum()

// 输出 0

这里是用了参数默认值的方式, 避免了不传参返回NaN, 还有另一种写法:

js
function getSum(Num1, Num2) {
    Num1 = Num1 || 0
    Num2 = Num2 || 0
    console.log(Num1 + Num2)
}

getSum()

// 输出 0

这种写法类似于参数默认值的写法, 下面就来解释一下, 什么是逻辑中断

逻辑运算符里的断路

断路:只存在于&&||中, 但满足一定条件会让右边代码不执行

符号断路条件
&&左边为false就断路
||左边为true就断路

原因:通过左边能得到整个式子的结果, 因此没必要再判断右边

运算结果:无论&&还是||, 运算结果都是被最后执行的表达式, 一般用变量赋值

举个例子

js
console.log(false && 5 + 5)
// 返回 false && 的左边是false, 所以不会在执行右边的代码了

console.log(true && 5 + 5)
// 返回 10 && 的左边是true, 所以不会在执行左边的代码了

console.log(10 && 20)
// 返回 20 如果两侧都是true, 则返回最后一个

console.log(false|| 5 + 5)
// 返回 10 && 的左边是false, 所以不会在执行左边的代码了

console.log(true || 5 + 5)
// 返回 true && 的左边是true, 所以不会在执行右边的代码了

console.log(10 || 20)
// 返回 10 返回第一个true

回到刚刚的例子

js
function getSum(Num1, Num2) {
    Num1 = Num1 || 0
  	// 如果Num1有值, 就执行Num1 = Num1, 否则执行Num1 = 0
    Num2 = Num2 || 0
  	// 如果Num2有值, 就执行Num2 = Num2, 否则执行Num2 = 0
    console.log(Num1 + Num2)
}

getSum()

// 输出 0