Wednesday, April 18, 2018

angular - Initialised property in class instance is "undefined" if set to zero or an empty string




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

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...