2 回答

TA贡献1824条经验 获得超6个赞
console.log返回undefined,这是假的,所以
((input==1 && console.log('yes')) || console.log('no'))
// equivalent to:
((true && console.log('yes')) || console.log('no'))
((true && undefined ) || console.log('no'))
(( undefined ) || console.log('no'))
所以第二个也console.log运行,因为第一个括号中的部分计算为 falsey 表达式。
我想您可以更改逻辑,以便该console.log部分成为另一个计算结果为true:
checking(1);
function checking (input) {
((input==1 && (console.log('yes')) || true) || console.log('no'))
}
但这真的非常奇怪,请改用条件运算符:
checking(1);
function checking (input) {
console.log(
input === 1
? 'yes'
: 'no'
);
}
或者if/ else,如果您需要多个语句而不是基于条件的单个表达式:
checking(1);
function checking (input) {
if (input === 1) {
console.log('yes');
// do something depending on input 1
} else {
console.log('no');
}
}
添加回答
举报