访问 javascript 中对象的布尔值 属性 总是 returns false?
Accessing a boolean property of an object in javascript always returns false?
我快疯了。我有一个名为 allAvailabilities
的对象数组
console.log(allAvailabilities[0]);
生成具有各种属性的对象,其中之一是:
...
isTrainee: true
...
但是
console.log(allAvailabilities[0]['isTrainee']);
console.log(allAvailabilities[0].isTrainee);
结果
false
false
我不明白是什么阻止我访问对象的实际 isTrainee
值 属性:
console.log(typeof(allAvailabilities[0]['isTrainee']));
console.log(typeof(allAvailabilities[0].isTrainee));
console.log(allAvailabilities[0]['isTrainee'].toString());
console.log(allAvailabilities[0].isTrainee.toString());
结果:
boolean
boolean
false
false
这怎么可能?我是否忽略了 Javascript 语法的基本部分?这是否与此处所述的 Boolean
class 有关:
Why does !new Boolean(false) equals false in JavaScript?
代码段工作正常,这是什么意思?
var allAvailabilities = [{_id: '605a5dd76f007e84f28e35fd', begin: '2021-04-03T18:00:00.000Z', end: '2021-04-03T20:30:00.000Z', season: 'regular', hostModel: 'users', isTrainee: true, season: "regular"}];
console.log(allAvailabilities[0]);
console.log(typeof(allAvailabilities[0]['isTrainee']));
console.log(typeof(allAvailabilities[0].isTrainee));
console.log(allAvailabilities[0]['isTrainee'].toString());
console.log(allAvailabilities[0].isTrainee.toString());
怎么会这样?
原始allAvailabilities
数组来自API,数组中的每个对象都被修改为具有isTrainee
属性,紧接着调用我遇到问题的代码:
我觉得是因为map里面有isTrainee的promise异步修改。我认为将地图更改为 for 可能会解决问题。 for 是一个同步函数而不是异步函数。
我快疯了。我有一个名为 allAvailabilities
console.log(allAvailabilities[0]);
生成具有各种属性的对象,其中之一是:
...
isTrainee: true
...
但是
console.log(allAvailabilities[0]['isTrainee']);
console.log(allAvailabilities[0].isTrainee);
结果
false
false
我不明白是什么阻止我访问对象的实际 isTrainee
值 属性:
console.log(typeof(allAvailabilities[0]['isTrainee']));
console.log(typeof(allAvailabilities[0].isTrainee));
console.log(allAvailabilities[0]['isTrainee'].toString());
console.log(allAvailabilities[0].isTrainee.toString());
结果:
boolean
boolean
false
false
这怎么可能?我是否忽略了 Javascript 语法的基本部分?这是否与此处所述的 Boolean
class 有关:
Why does !new Boolean(false) equals false in JavaScript?
代码段工作正常,这是什么意思?
var allAvailabilities = [{_id: '605a5dd76f007e84f28e35fd', begin: '2021-04-03T18:00:00.000Z', end: '2021-04-03T20:30:00.000Z', season: 'regular', hostModel: 'users', isTrainee: true, season: "regular"}];
console.log(allAvailabilities[0]);
console.log(typeof(allAvailabilities[0]['isTrainee']));
console.log(typeof(allAvailabilities[0].isTrainee));
console.log(allAvailabilities[0]['isTrainee'].toString());
console.log(allAvailabilities[0].isTrainee.toString());
怎么会这样?
原始allAvailabilities
数组来自API,数组中的每个对象都被修改为具有isTrainee
属性,紧接着调用我遇到问题的代码:
我觉得是因为map里面有isTrainee的promise异步修改。我认为将地图更改为 for 可能会解决问题。 for 是一个同步函数而不是异步函数。