不知何故,我设法通过谷歌搜索得到一个很好的答案。 Java dev这里是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
所以,首先,为什么它没有记录第二行的String部分,其次,为什么它是错误的,因为它显然是正确的。长度为107,因此它大于0。
答案 0 :(得分:1)
为什么它是假的,因为它显然是真的?
这里的问题只是operator precedence。为简单起见,假设我们有这个数组...
var arr = [1, 2, 3];
...其长度明显> 0
如果我们这样做:
var arr = [1, 2, 3];
console.log("length > 0: " + arr.length > 0)
我们其实在做两件事。
"length > 0: " + arr.length
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 ----^--------------^
答案 1 :(得分:0)
试试这个:
console.log('this.props.projectData.length: ', this.props.projectData.length);
console.log('this.props.projectData.length >= 0 : ', this.props.projectData.length >= 0);
答案 2 :(得分:-1)
只有一个变化,
console.log('this.props.projectData.length >= 0 : ' + this.props.projectData.length);
你正在检查这里的长度,它正在成为现实。 但现在它会正常工作。