【问题标题】:Console logging comparator boolean in JavascriptJavascript 中的控制台日志记录比较器布尔值
【发布时间】:2018-01-08 13:05:56
【问题描述】:

不知何故,我无法通过谷歌搜索得到一个好的答案。这里是 Java 开发人员,Javascipt 的新手。

我有这个代码:

console.log('this.props.projectData.length: ' + this.props.projectData.length);
console.log('this.props.projectData.length >= 0 : ' + this.props.projectData.length >= 0);

输出:

this.props.projectData.length: 107
false

所以,首先,为什么它不记录第二行的字符串部分,其次,为什么它是假的,因为它显然是真的。长度为107,因此大于0。

【问题讨论】:

    标签: javascript boolean console.log


    【解决方案1】:

    为什么是假的,明明是真的?

    这里的问题只是operator precedence。为简单起见,假设我们有这个数组...

    var arr = [1, 2, 3];
    

    ...其长度明显> 0。

    如果我们这样做:

    var arr = [1, 2, 3];
    console.log("length > 0: " + arr.length > 0)

    我们实际上正在做两件事。

    1. 计算总和"length > 0: " + arr.length
    2. 然后,将该总和的结果与0 进行比较

    因此,由于运算符优先级,我们这样做:

    ("length > 0: " + arr.length) > 0
    

    让我们证明一下。第一:

    var arr = [1, 2, 3];
    console.log("length > 0: " + arr.length)

    我们将一个数字添加到一个字符串中,这给了我们一个字符串,"length > 0: 3"

    然后,我们将字符串与数字进行比较:

    var arr = [1, 2, 3];
    console.log("length > 0: 3" > 0)

    NaN > 0 相同。那当然是false

    解决方案

    你想要的是这个:

    var arr = [1, 2, 3];
    console.log("length > 0: " + (arr.length > 0))
    //grouping operator here ----^--------------^

    【讨论】:

      【解决方案2】:

      试试这个:

      console.log('this.props.projectData.length: ', this.props.projectData.length);
      console.log('this.props.projectData.length >= 0 : ', this.props.projectData.length >= 0);
      

      【讨论】:

      • 巫术.. 谢谢。将在 10 分钟内接受您的回答。
      • @SteveWaters:在 Java 中肯定运算符优先级是一回事,不是吗?如果答案能解释问题,那就太好了。
      • @rockstar,在 Java 中它的工作方式是: System.out.println("projectData.length >= 0 : " + this.props.projectData.length >= 0);"
      • @SteveWaters:我并不是说语言必须相同。我只是说我想操作员有 一些 的优先规则,这些规则对 Java 开发人员来说不应该那么陌生。毫无疑问,这是一个令人惊讶的结果,但是一旦将表达式分开,就应该很清楚了。无论如何,我仍然认为虽然这是一个解决方案,但它并没有真正给出答案。
      【解决方案3】:

      只有一个变化,

      console.log('this.props.projectData.length >= 0 : ' + this.props.projectData.length);
      

      您正在检查这里的长度,它正在变为 true 。 但现在它可以正常工作了。

      【讨论】:

      • 等等,你刚刚删除了他要问的比较,所以现在和他的第一行一样。
      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      相关资源
      最近更新 更多