Javascript 区间比较不';JS中的t炸弹

Javascript 区间比较不';JS中的t炸弹,javascript,boolean,intervals,Javascript,Boolean,Intervals,为什么不在JavaScript中使用间隔比较 if(-1 < x < 1) { console.log('x: ', x) } if(-1

为什么不在JavaScript中使用间隔比较

if(-1 < x < 1) {
  console.log('x: ', x)
}
if(-1
为什么允许我们这样做而不会出错

此外,似乎:


  • -1
    对于
    x是正确的,因为JavaScript允许隐式类型强制,在本例中是从布尔值到数字。
    -1
    生成一个布尔值,然后将其隐式强制为
    (result)<1
    部分的一个数字(true=1,false=0)。因此:

    • -1
      为false时,第二部分为
      0<1
      ,为true

    • -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
      ,为假

    因为JavaScript允许隐式类型强制,在本例中是从布尔值到数字。
    -1
    生成一个布尔值,然后将其隐式强制为
    (result)<1
    部分的一个数字(true=1,false=0)。因此:

    • -1
      为false时,第二部分为
      0<1
      ,为true

    • -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
      ,为假

    我认为这是因为javascript隐式地认为
    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
    您真正需要的是
    -1
    @HerrSerker我知道如何进行适当的比较,我只是问JS如何评估其他语言中所谓的区间比较。我知道这一点。但是其他想知道如何正确操作的人可能会感兴趣,他们被评估为
    (-1
    ,这相当于
    (-1
    !(-1
    您真正需要的是
    -1
    @HerrSerker我知道如何进行适当的比较,我只是问JS如何评估其他语言中所谓的区间比较。我知道这一点。但对于其他想知道如何做对的人来说,这会很有趣