【问题标题】:Initialised property in class instance is "undefined" if set to zero or an empty string [duplicate]如果设置为零或空字符串,则类实例中的初始化属性为“未定义”[重复]
【发布时间】:2019-12-16 14:35:38
【问题描述】:

我有一个类的实例,其中几个数字和字符串属性分别初始化为 0 或 ""。访问这些属性时,它们是“未定义的”。将这些属性初始化为其他任何值,即 0.1 或“”,它被视为已定义。

为什么? 0 和 "" 是否等同于 undefined?

export class Car {
     id = 0
     name = ""
}

如果我有一个 Car 实例并尝试访问一个属性,它将是“未定义的”,

let myCar = new Car
if (myCar.id) {
    console.log('yay')
} else {
    console.log('boo')
}

它会显示“嘘”。

【问题讨论】:

  • 0 和空字符串分别是这些类型的默认值,并将评估为 false。将if(myCar.id) 更改为if(myCar.id !== undefined)

标签: angular typescript


【解决方案1】:

在 javascript 中,值 0 被评估为虚假语句。空字符串"" 也是如此。如果你想测试属性是否未定义,你需要明确地这样做

let myCar = new Car
if (myCar.id !== undefined) {
    console.log('yay')
} else {
    console.log('boo')
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多