Javascript 区间比较不';JS中的t炸弹
为什么不在JavaScript中使用间隔比较Javascript 区间比较不';JS中的t炸弹,javascript,boolean,intervals,Javascript,Boolean,Intervals,为什么不在JavaScript中使用间隔比较 if(-1 < x < 1) { console.log('x: ', x) } if(-1
if(-1 < x < 1) {
console.log('x: ', x)
}
if(-1
为什么允许我们这样做而不会出错
此外,似乎:
对于-1
x是正确的,因为JavaScript允许隐式类型强制,在本例中是从布尔值到数字。
生成一个布尔值,然后将其隐式强制为-1
部分的一个数字(true=1,false=0)。因此:(result)<1
- 当
为false时,第二部分为-1
,为true0<1
- 当
为真时,第二部分为-1
,为假1<1
在最后两种情况下,似乎只是比较表达式的两端。这些表达是如何评价的 使用-1
和x=-1
:x=1
- 如果
,则x=-1
为假,其余为-1
,为假0<-1
- 如果
,则x=1
为真,其余为-1<1
,为假1<-1
- 如果
,则x=-1
为真,其余为-2<-1
,为假1<-2
- 如果
,则x=1
为真,其余为-2<1
,为假1<-2
生成一个布尔值,然后将其隐式强制为-1
部分的一个数字(true=1,false=0)。因此:(result)<1
- 当
为false时,第二部分为-1
,为true0<1
- 当
为真时,第二部分为-1
,为假1<1
在最后两种情况下,似乎只是比较表达式的两端。这些表达是如何评价的 使用-1
和x=-1
:x=1
- 如果
,则x=-1
为假,其余为-1
,为假0<-1
- 如果
,则x=1
为真,其余为-1<1
,为假1<-1
- 如果
,则x=-1
为真,其余为-2<-1
,为假1<-2
- 如果
,则x=1
为真,其余为-2<1
,为假1<-2
具有值true
和1
具有值false
当您执行0
时,您实际执行的是-1
,或者(-1
如果true<1
,则为x=0
但是,如果false
,x=-2
将返回(-1
,因为true
为false<1
。希望这有帮助 您可以在此处阅读更多关于此的信息:true
我认为这是因为javascript隐式地认为
具有值true
和1
具有值false
当您执行0
时,您实际执行的是-1
,或者(-1
如果true<1
,则为x=0
但是,如果false
,x=-2
将返回(-1
,因为true
为false<1
。希望这有帮助 您可以在此处阅读更多关于此的信息:true
原因是JS解释了您的表达式if((-1 < x) < 1) { console.log('x: ', x) }
if(-1
尝试使用大括号…原因是JS解释了您的表达式if((-1 < x) < 1) { console.log('x: ', x) }
if(-1
尝试使用大括号…它们被评估为
,这相当于(-1
或(-1
您真正需要的是!(-1
@HerrSerker我知道如何进行适当的比较,我只是问JS如何评估其他语言中所谓的区间比较。我知道这一点。但是其他想知道如何正确操作的人可能会感兴趣,他们被评估为-1
,这相当于(-1
或(-1
您真正需要的是!(-1
@HerrSerker我知道如何进行适当的比较,我只是问JS如何评估其他语言中所谓的区间比较。我知道这一点。但对于其他想知道如何做对的人来说,这会很有趣-1
- 当