Wednesday, 18 April 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

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...