我在打字稿中有这段代码:
console.log ('collection[0] -> ' + collection[0] );
console.log ('collection[0] !== null -> ' + collection[0] !== null);
但这是控制台上的结果:
console.log src/services/service.ts:122
collection[0] -> null
console.log src/services/service.ts:123
true
答案 0 :(得分:1)
我敢打赌,您的collection[0]
是一个包含'null'
的字符串,而不是原始值null
。试试:
console.log (collection[0] !== 'null');
当转换为字符串时,它也可能是导致'null'
的对象:
const item = collection[0];
const isWeirdNullObj = typeof item === 'object' && item !== null && String(item) === 'null';
可能会发生以下情况:
const item = {
valueOf() {
return 'null';
}
};
console.log('item is ' + item);
console.log(typeof item);
答案 1 :(得分:1)
加法运算符优先于相等运算符。
因此,在您的代码中,首先对加法运算进行评估。尝试以下方法:-
console.log ('collection[0] !== null -> ' + (collection[0] !== null));
答案 2 :(得分:0)
您对JavaScript的类型强制性感到厌倦。 JS中的+
运算符具有许多与其相关的操作。我建议您不要concat
使用它,而应使用字符串插值代替。
console.log(`collection[0] !== null -> ${collection[0] !== null}`);
另一个选择是用逗号分隔两个操作。 console.log
可以接受任意数量的参数并将其组合起来
console.log ('collection[0] !== null -> ', collection[0] !== null);
答案 3 :(得分:0)
如果要记录一些变量,请使用,
代替+
:
var collection = [null];
console.log ('collection[0] -> ', collection[0] );
console.log ('collection[0] !== null -> ', collection[0] !== null);