gpt4 book ai didi

javascript - 如何用短路编码 if 语句

转载 作者:行者123 更新时间:2023-11-30 09:14:08 24 4
gpt4 key购买 nike

我是 JavasSript 的新手,正在尝试编写带有短路的 if 语句。

在下面的代码中,第一个尝试查看输入是否为 1,在控制台页面上显示"is",否则为“否”。

function checking (input) {
((input==1 && return 'yes') || return 'no')
}

但是,出于某种原因,当输入为 1 时,我可以同时看到"is"和“否”。我尝试通过将 return 替换为 console.log 来进行测试>:

checking(1); 
function checking (input) {
((input==1 && console.log('yes')) || console.log('no'))
}
// output => yes
// output => no

然后,我发现 console.log('yes') 正在返回“undefined”。

我该如何解决这个问题?

如何用 return 替换 console.log()?较早的带有 return 的代码会产生语法错误。

最佳答案

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 也会运行,因为第一个括号中的部分求值为错误表达式。

我想您可以更改逻辑,使 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');
}
}

关于javascript - 如何用短路编码 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com