return a || b
当 a 的值为真时,return a 会立即返回 a 的值,不会继续执行 || 后面的表达式,这是因为 JavaScript 中的逻辑或运算符是短路运算符。如果 a 的值为假,则会继续计算 b 的值,并返回 b 的值。
function fn(a,b) {
return a || b
}
const res1 = fn(null,undefined)
console.log(res1) // undefined
const res2 = fn(undefined,null)
console.log(res2) // null
const res3 = fn(1,2)
console.log(res3) // 1
return a && b
与 a || b刚好相反,a真返回b,a假返回a
function fn(a,b) {
return a && b
}
const res1 = fn(null,undefined)
console.log(res1) // null
const res2 = fn(undefined,null)
console.log(res2) // undefined
const res3 = fn(1,2)
console.log(res3) // 2
return a, b
虽然使用了逗号来分隔a和b,但是这个逗号实际上是作为逗号运算符使用的,而不是作为变量的分隔符
。实际上,return a, b 只会返回 b
的值,而 a 的值则被忽略。逗号运算符在这里的作用是对多个表达式进行求值,并返回最后一个表达式的值。
例如:
function exampleFn() {
let a = 5;
let b = 10;
return a, b;
}
let result = exampleFn();
console.log(result); // 输出 10,因为返回的是最后一个表达式 b 的值
通常情况下,在 return 语句中不推荐使用逗号操作符来分隔多个表达式
,因为会造成混淆,阅读性较差。
如果想要返回多个值,可以将它们包装在一个数组或对象中,然后返回该数组或对象。
function exampleFn() {
let a = 5;
let b = 10;
return [a, b]; // 或者使用对象: return { a, b };
}
let result = exampleFn();
console.log(result); // [5, 10]
总结:并不推荐使用return a,b 这种语法,如果想要返回多个值,可以将其放入数组或对象中,然后返回。