gpt4 book ai didi

javascript - Javascript 中的控制台记录比较器 boolean 值

转载 作者:行者123 更新时间:2023-11-28 03:49:25 24 4
gpt4 key购买 nike

不知何故,我无法通过谷歌搜索找到一个好的答案。这里是 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。

最佳答案

why is it false, as it's clearly true?

这里的问题只是 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相同。当然,这是错误

解决方案:

你想要的是这样的:

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

关于javascript - Javascript 中的控制台记录比较器 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48150924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com