作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我是一名优秀的程序员,十分优秀!