Javascript 反应Mousewheel.deltaY对if语句作出反应,但不切换
React组件侦听滚轮滚动:Javascript 反应Mousewheel.deltaY对if语句作出反应,但不切换,javascript,reactjs,switch-statement,Javascript,Reactjs,Switch Statement,React组件侦听滚轮滚动: componentDidMount() { this.refs.holder.addEventListener('mousewheel', this.handleScroll); } 并对此作出反应: handleScroll(e) { switch (e) { case e.deltaY > 0: console.log('positive'); default: consol
componentDidMount() {
this.refs.holder.addEventListener('mousewheel', this.handleScroll);
}
并对此作出反应:
handleScroll(e) {
switch (e) {
case e.deltaY > 0:
console.log('positive');
default:
console.log('negative');
}
if (e.deltaY > 0) {
console.log('positive');
} else {
console.log('negative');
}
}
它与if/else语句配合很好,但与switch不配合,请您解释一下原因好吗?这与React无关。Switch语句不是这样工作的。您正在将
e.deltaY>0
的结果与e
进行比较,这两个结果永远不会匹配e.deltaY>0
将始终为true
或false
e
是一个事件对象,永远不会是true
或false
。你可以做类似的事情来代替
switch (e.deltaY > 0) {
case true:
console.log('positive');
break;
default:
console.log('negative');
}
但我建议使用一个简单的
if
语句,因为您只有true
和false
这与React无关。Switch语句不是这样工作的。您正在将e.deltaY>0
的结果与e
进行比较,这两个结果永远不会匹配e.deltaY>0
将始终为true
或false
e
是一个事件对象,永远不会是true
或false
。你可以做类似的事情来代替
switch (e.deltaY > 0) {
case true:
console.log('positive');
break;
default:
console.log('negative');
}
但我建议使用一个简单的if
语句,因为您只有Doc中的true
和false
switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式计算结果与输入表达式的结果相同(使用严格比较,==),并将控制权转移给它
每次===
都会给出不同的结果,您不会从文档中得到预期的结果
switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式计算结果与输入表达式的结果相同(使用严格比较,==),并将控制权转移给它
每次
===
都会给出不同的结果,你不会得到预期的结果谢谢你的解释,查理。谢谢你的解释,查理。