我是JavasSript的新手,并且尝试编写带有短路的if
语句。
在下面的代码中,第一个试图查看输入是否为1,在控制台页面上显示“ yes”,否则为“ no”。
function checking (input) {
((input==1 && return 'yes') || return 'no')
}
但是,由于某些原因,当输入为1时,我会看到“是”和“否”。我尝试通过将return
替换为console.log
来进行测试:
checking(1);
function checking (input) {
((input==1 && console.log('yes')) || console.log('no'))
}
// output => yes
// output => no
然后,我发现console.log('yes')
返回的是'undefined'。
我该如何解决?
如何将console.log()
替换为return
?带有return的早期代码会产生语法错误。
答案 0 :(得分:3)
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');
}
}
答案 1 :(得分:1)
您可以使用ternary operator,其用法如下:
function checking(input) {
return input === 1 ? "yes" : "no";
}
如果value
是1
,那么它将返回"yes"
,如果没有返回"no"
。
希望我的回答会有所帮助。