I have an instance of a class, in which several number and string properties are initialized to 0 or "" respectively. When accessing these properties they are "undefined". Initializing these properties to anything else, ie 0.1 or " " and it is considered defined.
Why? Are 0 and "" equivalent to undefined?
export class Car {
id = 0
name = ""
}
If I have an instance of Car and try to access a property it will be "undefined",
let myCar = new Car
if (myCar.id) {
console.log('yay')
} else {
console.log('boo')
}
It will show 'boo'.
Answer
In javascript, the value 0
is evaluated as a falsy statement. Same for an empty string ""
. If you want to test if the property is undefined you need to do so explicitely
let myCar = new Car
if (myCar.id !== undefined) {
console.log('yay')
} else {
console.log('boo')
}
No comments:
Post a Comment